From 022491d9d2723ca4d7d0718cdb1fd67e7652428e Mon Sep 17 00:00:00 2001 From: cvs2git Date: Wed, 7 Apr 2004 09:08:35 +0000 Subject: This commit was manufactured by cvs2svn to create tag 'NET_WHOIS_RAW_0_31'. --- rt/COPYING | 339 - rt/Changelog | 2913 --------- rt/FREESIDE_MODIFIED | 3 - rt/HOWTO/README | 14 - rt/HOWTO/change.txt | 67 - rt/HOWTO/release.txt | 124 - rt/HOWTO/version-control.txt | 41 - rt/Makefile | 485 -- rt/Makefile.in | 490 -- rt/README | 300 - rt/README.Oracle | 37 - rt/UPGRADING | 64 - rt/aclocal.m4 | 158 - rt/autom4te.cache/output.0 | 2771 -------- rt/autom4te.cache/requests | 94 - rt/autom4te.cache/traces.0 | 158 - rt/bin/mason_handler.fcgi | 54 - rt/bin/mason_handler.fcgi.in | 68 - rt/bin/mason_handler.scgi | 41 - rt/bin/mason_handler.scgi.in | 43 - rt/bin/mason_handler.svc | 234 - rt/bin/mason_handler.svc.in | 234 - rt/bin/rt-commit-handler | 846 --- rt/bin/rt-commit-handler.in | 846 --- rt/bin/rt-crontool | 220 - rt/bin/rt-crontool.in | 220 - rt/bin/rt-mailgate | 587 -- rt/bin/rt-mailgate.in | 648 -- rt/bin/rt.in | 1816 ------ rt/bin/webmux.pl | 125 - rt/bin/webmux.pl.in | 148 - rt/config | 256 - rt/config.layout.in | 127 - rt/config.log | 118 - rt/config.pld | 19 - rt/config.status | 713 --- rt/configure | 2771 -------- rt/configure.ac | 229 - rt/docs/README.docs | 2 - rt/docs/Security | 25 - rt/docs/design_docs/CARS | 66 - rt/docs/design_docs/TransactionTypes.txt | 48 - rt/docs/design_docs/acls | 50 - rt/docs/design_docs/approval_notices | 8 - rt/docs/design_docs/approval_template | 25 - rt/docs/design_docs/cf_search | 72 - rt/docs/design_docs/cli_spec | 31 - rt/docs/design_docs/cvs_integration | 164 - rt/docs/design_docs/delegation | 115 - rt/docs/design_docs/evil_plans | 162 - rt/docs/design_docs/groups_notes | 88 - rt/docs/design_docs/link-definitions.txt | 143 - .../recursive_group_membership_algorithm | 109 - rt/docs/design_docs/rql_parser_machine.graphviz | 32 - rt/docs/design_docs/string-extraction-guide.txt | 100 - rt/docs/design_docs/subscription-definitions.txt | 113 - rt/docs/design_docs/ticket_templates | 16 - rt/docs/design_docs/users | 14 - rt/docs/rt3-schema-relationships.dot | 81 - rt/etc/RT_Config.pm | 374 -- rt/etc/RT_Config.pm.in | 374 -- rt/etc/RT_SiteConfig.pm | 1 - rt/etc/acl.Informix | 5 - rt/etc/acl.Oracle | 10 - rt/etc/acl.Pg | 63 - rt/etc/acl.mysql | 8 - rt/etc/constraints.mysql | 42 - rt/etc/drop.Informix | 19 - rt/etc/drop.Oracle | 37 - rt/etc/initialdata | 569 -- rt/etc/rt.spec | 137 - rt/etc/schema.Informix | 342 - rt/etc/schema.Pg | 578 -- rt/etc/schema.SQLite | 390 -- rt/etc/schema.mysql | 416 -- rt/etc/upgrade/2.1.71 | 211 - rt/html/Admin/Elements/AddCustomFieldValue | 44 - rt/html/Admin/Elements/CreateUserCalled | 26 - rt/html/Admin/Elements/EditCustomField | 127 - rt/html/Admin/Elements/EditCustomFieldValues | 42 - rt/html/Admin/Elements/EditCustomFields | 213 - rt/html/Admin/Elements/EditQueueWatchers | 55 - rt/html/Admin/Elements/EditScrip | 158 - rt/html/Admin/Elements/EditScrips | 99 - rt/html/Admin/Elements/EditTemplates | 104 - rt/html/Admin/Elements/EditUserComments | 32 - rt/html/Admin/Elements/GroupTabs | 76 - rt/html/Admin/Elements/Header | 28 - rt/html/Admin/Elements/ListGlobalCustomFields | 37 - rt/html/Admin/Elements/ListGlobalScrips | 37 - rt/html/Admin/Elements/ModifyQueue | 78 - rt/html/Admin/Elements/ModifyTemplate | 60 - rt/html/Admin/Elements/ModifyUser | 99 - rt/html/Admin/Elements/QueueRightsForUser | 40 - rt/html/Admin/Elements/QueueTabs | 93 - rt/html/Admin/Elements/SelectCustomFieldType | 36 - rt/html/Admin/Elements/SelectGroups | 38 - rt/html/Admin/Elements/SelectModifyGroup | 33 - rt/html/Admin/Elements/SelectModifyQueue | 33 - rt/html/Admin/Elements/SelectModifyUser | 49 - rt/html/Admin/Elements/SelectNewGroupMembers | 61 - rt/html/Admin/Elements/SelectRights | 91 - rt/html/Admin/Elements/SelectScrip | 48 - rt/html/Admin/Elements/SelectScripAction | 48 - rt/html/Admin/Elements/SelectScripCondition | 48 - rt/html/Admin/Elements/SelectSingleOrMultiple | 43 - rt/html/Admin/Elements/SelectStage | 39 - rt/html/Admin/Elements/SelectTemplate | 61 - rt/html/Admin/Elements/SelectUsers | 40 - rt/html/Admin/Elements/SystemTabs | 70 - rt/html/Admin/Elements/Tabs | 63 - rt/html/Admin/Elements/UserTabs | 74 - rt/html/Admin/Global/CustomField.html | 61 - rt/html/Admin/Global/CustomFields.html | 47 - rt/html/Admin/Global/GroupRights.html | 99 - rt/html/Admin/Global/Scrip.html | 56 - rt/html/Admin/Global/Scrips.html | 53 - rt/html/Admin/Global/Template.html | 101 - rt/html/Admin/Global/Templates.html | 53 - rt/html/Admin/Global/UserRights.html | 77 - rt/html/Admin/Global/index.html | 64 - rt/html/Admin/Groups/GroupRights.html | 95 - rt/html/Admin/Groups/Members.html | 134 - rt/html/Admin/Groups/Modify.html | 134 - rt/html/Admin/Groups/UserRights.html | 92 - rt/html/Admin/Groups/index.html | 43 - rt/html/Admin/Queues/CustomField.html | 60 - rt/html/Admin/Queues/CustomFields.html | 49 - rt/html/Admin/Queues/GroupRights.html | 110 - rt/html/Admin/Queues/Modify.html | 163 - rt/html/Admin/Queues/People.html | 186 - rt/html/Admin/Queues/Scrip.html | 67 - rt/html/Admin/Queues/Scrips.html | 63 - rt/html/Admin/Queues/Template.html | 101 - rt/html/Admin/Queues/Templates.html | 57 - rt/html/Admin/Queues/UserRights.html | 90 - rt/html/Admin/Queues/index.html | 61 - rt/html/Admin/Users/Modify.html | 349 - rt/html/Admin/Users/Prefs.html | 122 - rt/html/Admin/Users/index.html | 81 - rt/html/Admin/index.html | 40 - rt/html/Approvals/Display.html | 50 - rt/html/Approvals/Elements/Approve | 56 - rt/html/Approvals/Elements/PendingMyApproval | 87 - rt/html/Approvals/Elements/ShowDependency | 85 - rt/html/Approvals/Elements/Tabs | 34 - rt/html/Approvals/index.html | 66 - rt/html/Elements/BevelBoxRaisedEnd | 26 - rt/html/Elements/BevelBoxRaisedStart | 26 - rt/html/Elements/Callback | 66 - rt/html/Elements/Checkbox | 39 - rt/html/Elements/CreateTicket | 26 - rt/html/Elements/Error | 62 - rt/html/Elements/Footer | 60 - rt/html/Elements/GotoTicket | 24 - rt/html/Elements/Header | 82 - rt/html/Elements/ListActions | 43 - rt/html/Elements/Login | 101 - rt/html/Elements/Menu | 84 - rt/html/Elements/MessageBox | 49 - rt/html/Elements/MyRequests | 78 - rt/html/Elements/MyTickets | 81 - rt/html/Elements/PageLayout | 99 - rt/html/Elements/Quicksearch | 61 - rt/html/Elements/Refresh | 45 - rt/html/Elements/Section | 34 - rt/html/Elements/SelectAttachmentField | 31 - rt/html/Elements/SelectBoolean | 46 - rt/html/Elements/SelectCustomFieldOperator | 40 - rt/html/Elements/SelectCustomFieldValue | 41 - rt/html/Elements/SelectDate | 48 - rt/html/Elements/SelectDateRelation | 36 - rt/html/Elements/SelectDateType | 36 - rt/html/Elements/SelectEqualityOperator | 40 - rt/html/Elements/SelectGroups | 29 - rt/html/Elements/SelectLang | 56 - rt/html/Elements/SelectLinkType | 37 - rt/html/Elements/SelectMatch | 53 - rt/html/Elements/SelectNewTicketQueue | 56 - rt/html/Elements/SelectOwner | 59 - rt/html/Elements/SelectQueue | 59 - rt/html/Elements/SelectResultsPerPage | 43 - rt/html/Elements/SelectSortOrder | 41 - rt/html/Elements/SelectStatus | 39 - rt/html/Elements/SelectTicketSortBy | 38 - rt/html/Elements/SelectTicketTypes | 34 - rt/html/Elements/SelectUsers | 31 - rt/html/Elements/SelectWatcherType | 47 - rt/html/Elements/SetupSessionCookie | 85 - rt/html/Elements/ShadedBox | 33 - rt/html/Elements/ShadedInputRow | 35 - rt/html/Elements/ShadedRow | 31 - rt/html/Elements/SimpleSearch | 27 - rt/html/Elements/Submit | 62 - rt/html/Elements/Tabs | 82 - rt/html/Elements/TitleBoxEnd | 31 - rt/html/Elements/TitleBoxStart | 60 - rt/html/Elements/ViewUser | 51 - rt/html/NoAuth/Logout.html | 46 - rt/html/NoAuth/Reminder.html | 26 - rt/html/NoAuth/images/back_home.gif | Bin 330 -> 0 bytes rt/html/NoAuth/images/bplogo.gif | Bin 825 -> 0 bytes rt/html/NoAuth/images/favicon.png | Bin 335 -> 0 bytes rt/html/NoAuth/images/head_requestracker.gif | Bin 1233 -> 0 bytes rt/html/NoAuth/images/rt.jpg | Bin 917 -> 0 bytes rt/html/NoAuth/images/space.gif | Bin 43 -> 0 bytes rt/html/NoAuth/images/spacer.gif | Bin 43 -> 0 bytes rt/html/NoAuth/images/squares_blue.gif | Bin 219 -> 0 bytes rt/html/NoAuth/webrt.css | 340 - rt/html/REST/1.0/Forms/queue/default | 123 - rt/html/REST/1.0/Forms/queue/ns | 38 - rt/html/REST/1.0/Forms/ticket/attachments | 107 - rt/html/REST/1.0/Forms/ticket/default | 253 - rt/html/REST/1.0/Forms/ticket/history | 144 - rt/html/REST/1.0/Forms/ticket/links | 148 - rt/html/REST/1.0/Forms/user/default | 141 - rt/html/REST/1.0/Forms/user/ns | 41 - rt/html/REST/1.0/NoAuth/mail-gateway | 52 - rt/html/REST/1.0/autohandler | 32 - rt/html/REST/1.0/dhandler | 287 - rt/html/REST/1.0/logout | 27 - rt/html/REST/1.0/search/dhandler | 32 - rt/html/REST/1.0/search/ticket | 119 - rt/html/REST/1.0/ticket/comment | 149 - rt/html/REST/1.0/ticket/link | 96 - rt/html/REST/1.0/ticket/merge | 78 - rt/html/Search/Bulk.html | 218 - rt/html/Search/Elements/PickRestriction | 142 - rt/html/Search/Elements/TicketHeader | 40 - rt/html/Search/Elements/TicketHeaderCell | 55 - rt/html/Search/Elements/TicketRow | 55 - rt/html/Search/Listing.html | 112 - rt/html/SelfService/Attachment/dhandler | 27 - rt/html/SelfService/Closed.html | 27 - rt/html/SelfService/Create.html | 80 - rt/html/SelfService/Display.html | 180 - rt/html/SelfService/Elements/GotoTicket | 24 - rt/html/SelfService/Elements/Header | 25 - rt/html/SelfService/Elements/MyRequests | 63 - rt/html/SelfService/Elements/Tabs | 64 - rt/html/SelfService/Error.html | 46 - rt/html/SelfService/Prefs.html | 68 - rt/html/SelfService/Update.html | 78 - rt/html/SelfService/index.html | 26 - rt/html/Ticket/Attachment/dhandler | 70 - rt/html/Ticket/Create.html | 266 - rt/html/Ticket/Display.html | 118 - rt/html/Ticket/Elements/AddWatchers | 99 - rt/html/Ticket/Elements/BulkLinks | 53 - rt/html/Ticket/Elements/EditBasics | 79 - rt/html/Ticket/Elements/EditCustomField | 74 - rt/html/Ticket/Elements/EditCustomFields | 74 - rt/html/Ticket/Elements/EditDates | 53 - rt/html/Ticket/Elements/EditLinks | 133 - rt/html/Ticket/Elements/EditPeople | 69 - rt/html/Ticket/Elements/EditWatchers | 52 - rt/html/Ticket/Elements/ShowAttachments | 79 - rt/html/Ticket/Elements/ShowBasics | 54 - rt/html/Ticket/Elements/ShowCustomFields | 46 - rt/html/Ticket/Elements/ShowDates | 63 - rt/html/Ticket/Elements/ShowDependencies | 41 - rt/html/Ticket/Elements/ShowHistory | 86 - rt/html/Ticket/Elements/ShowLink | 40 - rt/html/Ticket/Elements/ShowLinks | 87 - rt/html/Ticket/Elements/ShowMemberOf | 35 - rt/html/Ticket/Elements/ShowMembers | 45 - rt/html/Ticket/Elements/ShowMessageHeaders | 32 - rt/html/Ticket/Elements/ShowMessageStanza | 61 - rt/html/Ticket/Elements/ShowPeople | 45 - rt/html/Ticket/Elements/ShowReferences | 50 - rt/html/Ticket/Elements/ShowRequestor | 59 - rt/html/Ticket/Elements/ShowSummary | 82 - rt/html/Ticket/Elements/ShowTransaction | 181 - rt/html/Ticket/Elements/Tabs | 176 - rt/html/Ticket/History.html | 52 - rt/html/Ticket/Modify.html | 63 - rt/html/Ticket/ModifyAll.html | 158 - rt/html/Ticket/ModifyDates.html | 52 - rt/html/Ticket/ModifyLinks.html | 54 - rt/html/Ticket/ModifyPeople.html | 68 - rt/html/Ticket/Update.html | 205 - rt/html/User/Delegation.html | 83 - rt/html/User/Elements/DelegateRights | 85 - rt/html/User/Elements/GroupTabs | 60 - rt/html/User/Elements/Tabs | 56 - rt/html/User/Groups/Members.html | 136 - rt/html/User/Groups/Modify.html | 133 - rt/html/User/Groups/index.html | 43 - rt/html/User/Prefs.html | 256 - rt/html/autohandler | 210 - rt/html/index.html | 85 - rt/html/l | 26 - rt/install-sh | 251 - rt/lib/RT.pm | 304 - rt/lib/RT.pm.in | 323 - rt/lib/RT/ACE.pm | 304 - rt/lib/RT/ACE_Overlay.pm | 907 --- rt/lib/RT/ACL.pm | 115 - rt/lib/RT/ACL_Overlay.pm | 295 - rt/lib/RT/Action/AutoOpen.pm | 86 - rt/lib/RT/Action/Autoreply.pm | 96 - rt/lib/RT/Action/CreateTickets.pm | 566 -- rt/lib/RT/Action/EscalatePriority.pm | 142 - rt/lib/RT/Action/Generic.pm | 195 - rt/lib/RT/Action/Notify.pm | 132 - rt/lib/RT/Action/NotifyAsComment.pm | 55 - rt/lib/RT/Action/ResolveMembers.pm | 88 - rt/lib/RT/Action/SendEmail.pm | 685 -- rt/lib/RT/Action/SetPriority.pm | 61 - rt/lib/RT/Action/UserDefined.pm | 71 - rt/lib/RT/Attachment.pm | 372 -- rt/lib/RT/Attachment_Overlay.pm | 592 -- rt/lib/RT/Attachments.pm | 115 - rt/lib/RT/Attachments_Overlay.pm | 116 - rt/lib/RT/Base.pm | 112 - rt/lib/RT/CachedGroupMember.pm | 258 - rt/lib/RT/CachedGroupMember_Overlay.pm | 323 - rt/lib/RT/CachedGroupMembers.pm | 115 - rt/lib/RT/CachedGroupMembers_Overlay.pm | 150 - rt/lib/RT/Condition/AnyTransaction.pm | 51 - rt/lib/RT/Condition/BeforeDue.pm | 64 - rt/lib/RT/Condition/Generic.pm | 211 - rt/lib/RT/Condition/Overdue.pm | 68 - rt/lib/RT/Condition/OwnerChange.pm | 102 - rt/lib/RT/Condition/PriorityExceeds.pm | 57 - rt/lib/RT/Condition/QueueChange.pm | 57 - rt/lib/RT/Condition/StatusChange.pm | 59 - rt/lib/RT/Condition/UserDefined.pm | 57 - rt/lib/RT/CurrentUser.pm | 374 -- rt/lib/RT/CustomField.pm | 340 - rt/lib/RT/CustomFieldValue.pm | 294 - rt/lib/RT/CustomFieldValues.pm | 121 - rt/lib/RT/CustomFieldValues_Overlay.pm | 47 - rt/lib/RT/CustomField_Overlay.pm | 566 -- rt/lib/RT/CustomFields.pm | 121 - rt/lib/RT/CustomFields_Overlay.pm | 135 - rt/lib/RT/Date.pm | 557 -- rt/lib/RT/EmailParser.pm | 820 --- rt/lib/RT/Group.pm | 258 - rt/lib/RT/GroupMember.pm | 189 - rt/lib/RT/GroupMember_Overlay.pm | 351 - rt/lib/RT/GroupMembers.pm | 115 - rt/lib/RT/GroupMembers_Overlay.pm | 126 - rt/lib/RT/Group_Overlay.pm | 1255 ---- rt/lib/RT/Groups.pm | 115 - rt/lib/RT/Groups_Overlay.pm | 360 -- rt/lib/RT/Handle.pm | 101 - rt/lib/RT/I18N.pm | 436 -- rt/lib/RT/I18N/cs.pm | 91 - rt/lib/RT/I18N/cs.po | 4496 ------------- rt/lib/RT/I18N/de.po | 4792 -------------- rt/lib/RT/I18N/en.po | 88 - rt/lib/RT/I18N/es.po | 4749 -------------- rt/lib/RT/I18N/fi.po | 4750 -------------- rt/lib/RT/I18N/fr.po | 4959 --------------- rt/lib/RT/I18N/he.po | 4871 -------------- rt/lib/RT/I18N/i_default.pm | 86 - rt/lib/RT/I18N/it.po | 6175 ------------------ rt/lib/RT/I18N/ja.po | 4822 -------------- rt/lib/RT/I18N/nl.po | 4819 -------------- rt/lib/RT/I18N/no.po | 4879 -------------- rt/lib/RT/I18N/pt_br.po | 4829 -------------- rt/lib/RT/I18N/ru.po | 4540 ------------- rt/lib/RT/I18N/zh_cn.po | 6677 -------------------- rt/lib/RT/I18N/zh_tw.po | 6677 -------------------- rt/lib/RT/Interface/CLI.pm | 246 - rt/lib/RT/Interface/Email.pm | 648 -- rt/lib/RT/Interface/Email/Auth/MailFrom.pm | 131 - rt/lib/RT/Interface/Email/Filter/SpamAssassin.pm | 63 - rt/lib/RT/Interface/REST.pm | 252 - rt/lib/RT/Interface/Web.pm | 1377 ---- rt/lib/RT/Link.pm | 302 - rt/lib/RT/Link_Overlay.pm | 360 -- rt/lib/RT/Links.pm | 115 - rt/lib/RT/Links_Overlay.pm | 125 - rt/lib/RT/Principal.pm | 212 - rt/lib/RT/Principal_Overlay.pm | 576 -- rt/lib/RT/Principals.pm | 115 - rt/lib/RT/Principals_Overlay.pm | 52 - rt/lib/RT/Queue.pm | 371 -- rt/lib/RT/Queue_Overlay.pm | 1015 --- rt/lib/RT/Queues.pm | 115 - rt/lib/RT/Queues_Overlay.pm | 130 - rt/lib/RT/Record.pm | 455 -- rt/lib/RT/Scrip.pm | 500 -- rt/lib/RT/ScripAction.pm | 279 - rt/lib/RT/ScripAction_Overlay.pm | 233 - rt/lib/RT/ScripActions.pm | 115 - rt/lib/RT/ScripActions_Overlay.pm | 87 - rt/lib/RT/ScripCondition.pm | 302 - rt/lib/RT/ScripCondition_Overlay.pm | 210 - rt/lib/RT/ScripConditions.pm | 115 - rt/lib/RT/ScripConditions_Overlay.pm | 87 - rt/lib/RT/Scrip_Overlay.pm | 515 -- rt/lib/RT/Scrips.pm | 115 - rt/lib/RT/Scrips_Overlay.pm | 208 - rt/lib/RT/Search/ActiveTicketsInQueue.pm | 78 - rt/lib/RT/Search/Generic.pm | 128 - rt/lib/RT/SearchBuilder.pm | 200 - rt/lib/RT/StyleGuide.pod | 891 --- rt/lib/RT/System.pm | 165 - rt/lib/RT/Template.pm | 363 -- rt/lib/RT/Template_Overlay.pm | 418 -- rt/lib/RT/Templates.pm | 115 - rt/lib/RT/Templates_Overlay.pm | 141 - rt/lib/RT/Ticket.pm | 662 -- rt/lib/RT/TicketCustomFieldValue.pm | 286 - rt/lib/RT/TicketCustomFieldValue_Overlay.pm | 52 - rt/lib/RT/TicketCustomFieldValues.pm | 115 - rt/lib/RT/TicketCustomFieldValues_Overlay.pm | 86 - rt/lib/RT/Ticket_Overlay.pm | 4095 ------------ rt/lib/RT/Tickets.pm | 115 - rt/lib/RT/Tickets_Overlay.pm | 2140 ------- rt/lib/RT/Tickets_Overlay_SQL.pm | 447 -- rt/lib/RT/Transaction.pm | 364 -- rt/lib/RT/Transaction_Overlay.pm | 796 --- rt/lib/RT/Transactions.pm | 115 - rt/lib/RT/Transactions_Overlay.pm | 86 - rt/lib/RT/URI.pm | 249 - rt/lib/RT/URI/base.pm | 129 - rt/lib/RT/URI/fsck_com_rt.pm | 246 - rt/lib/RT/User.pm | 854 --- rt/lib/RT/User_Overlay.pm | 1594 ----- rt/lib/RT/Users.pm | 115 - rt/lib/RT/Users_Overlay.pm | 310 - rt/lib/t/00smoke.t | 14 - rt/lib/t/00smoke.t.in | 14 - rt/lib/t/01harness.t | 12 - rt/lib/t/01harness.t.in | 12 - rt/lib/t/02regression.t | 44 - rt/lib/t/02regression.t.in | 44 - rt/lib/t/03web.pl | 94 - rt/lib/t/03web.pl.in | 94 - rt/lib/t/04_send_email.pl | 481 -- rt/lib/t/04_send_email.pl.in | 481 -- rt/lib/t/data/8859-15-message-series/dir | 356 -- rt/lib/t/data/8859-15-message-series/msg1 | 36 - rt/lib/t/data/8859-15-message-series/msg2 | 36 - rt/lib/t/data/8859-15-message-series/msg3 | 35 - rt/lib/t/data/8859-15-message-series/msg4 | 35 - rt/lib/t/data/8859-15-message-series/msg5 | 35 - rt/lib/t/data/8859-15-message-series/msg6 | 35 - rt/lib/t/data/8859-15-message-series/msg7 | 36 - rt/lib/t/data/crashes-file-based-parser | 193 - rt/lib/t/data/multipart-alternative-with-umlaut | 62 - rt/lib/t/data/multipart-report | 66 - rt/lib/t/data/nested-mime-sample | 396 -- rt/lib/t/data/nested-rfc-822 | 253 - rt/lib/t/data/new-ticket-from-iso-8859-1 | 31 - rt/lib/t/data/new-ticket-from-iso-8859-1-full | 38 - rt/lib/t/data/notes-uuencoded | 2368 ------- rt/lib/t/data/russian-subject-no-content-type | 42 - rt/lib/t/data/text-html-in-russian | 87 - rt/lib/t/data/text-html-with-umlaut | 35 - rt/lib/t/regression/00placeholder | 1 - rt/lib/t/regression/mime_tests | 19 - rt/m4/rt_enable_layout.m4 | 36 - rt/m4/rt_expand_var.m4 | 18 - rt/m4/rt_layout.m4 | 74 - rt/m4/rt_subst_expanded_arg.m4 | 14 - rt/sbin/extract-message-catalog | 246 - rt/sbin/extract_pod_tests | 129 - rt/sbin/factory | 428 -- rt/sbin/license_tag | 196 - rt/sbin/regression_harness | 33 - rt/sbin/rt-setup-database | 622 -- rt/sbin/rt-setup-database.in | 619 -- rt/sbin/rt-test-dependencies | 278 - rt/sbin/rt-test-dependencies.in | 278 - 469 files changed, 159002 deletions(-) delete mode 100755 rt/COPYING delete mode 100644 rt/Changelog delete mode 100644 rt/FREESIDE_MODIFIED delete mode 100644 rt/HOWTO/README delete mode 100644 rt/HOWTO/change.txt delete mode 100644 rt/HOWTO/release.txt delete mode 100644 rt/HOWTO/version-control.txt delete mode 100644 rt/Makefile delete mode 100644 rt/Makefile.in delete mode 100755 rt/README delete mode 100644 rt/README.Oracle delete mode 100644 rt/UPGRADING delete mode 100644 rt/aclocal.m4 delete mode 100644 rt/autom4te.cache/output.0 delete mode 100644 rt/autom4te.cache/requests delete mode 100644 rt/autom4te.cache/traces.0 delete mode 100755 rt/bin/mason_handler.fcgi delete mode 100644 rt/bin/mason_handler.fcgi.in delete mode 100755 rt/bin/mason_handler.scgi delete mode 100644 rt/bin/mason_handler.scgi.in delete mode 100644 rt/bin/mason_handler.svc delete mode 100644 rt/bin/mason_handler.svc.in delete mode 100644 rt/bin/rt-commit-handler delete mode 100644 rt/bin/rt-commit-handler.in delete mode 100644 rt/bin/rt-crontool delete mode 100644 rt/bin/rt-crontool.in delete mode 100755 rt/bin/rt-mailgate delete mode 100644 rt/bin/rt-mailgate.in delete mode 100644 rt/bin/rt.in delete mode 100755 rt/bin/webmux.pl delete mode 100644 rt/bin/webmux.pl.in delete mode 100644 rt/config delete mode 100644 rt/config.layout.in delete mode 100644 rt/config.log delete mode 100644 rt/config.pld delete mode 100755 rt/config.status delete mode 100755 rt/configure delete mode 100644 rt/configure.ac delete mode 100755 rt/docs/README.docs delete mode 100644 rt/docs/Security delete mode 100755 rt/docs/design_docs/CARS delete mode 100755 rt/docs/design_docs/TransactionTypes.txt delete mode 100644 rt/docs/design_docs/acls delete mode 100644 rt/docs/design_docs/approval_notices delete mode 100644 rt/docs/design_docs/approval_template delete mode 100644 rt/docs/design_docs/cf_search delete mode 100644 rt/docs/design_docs/cli_spec delete mode 100644 rt/docs/design_docs/cvs_integration delete mode 100644 rt/docs/design_docs/delegation delete mode 100644 rt/docs/design_docs/evil_plans delete mode 100644 rt/docs/design_docs/groups_notes delete mode 100644 rt/docs/design_docs/link-definitions.txt delete mode 100644 rt/docs/design_docs/recursive_group_membership_algorithm delete mode 100644 rt/docs/design_docs/rql_parser_machine.graphviz delete mode 100644 rt/docs/design_docs/string-extraction-guide.txt delete mode 100755 rt/docs/design_docs/subscription-definitions.txt delete mode 100644 rt/docs/design_docs/ticket_templates delete mode 100644 rt/docs/design_docs/users delete mode 100644 rt/docs/rt3-schema-relationships.dot delete mode 100644 rt/etc/RT_Config.pm delete mode 100644 rt/etc/RT_Config.pm.in delete mode 100644 rt/etc/RT_SiteConfig.pm delete mode 100644 rt/etc/acl.Informix delete mode 100644 rt/etc/acl.Oracle delete mode 100755 rt/etc/acl.Pg delete mode 100755 rt/etc/acl.mysql delete mode 100644 rt/etc/constraints.mysql delete mode 100644 rt/etc/drop.Informix delete mode 100644 rt/etc/drop.Oracle delete mode 100644 rt/etc/initialdata delete mode 100644 rt/etc/rt.spec delete mode 100644 rt/etc/schema.Informix delete mode 100755 rt/etc/schema.Pg delete mode 100644 rt/etc/schema.SQLite delete mode 100755 rt/etc/schema.mysql delete mode 100644 rt/etc/upgrade/2.1.71 delete mode 100644 rt/html/Admin/Elements/AddCustomFieldValue delete mode 100644 rt/html/Admin/Elements/CreateUserCalled delete mode 100644 rt/html/Admin/Elements/EditCustomField delete mode 100644 rt/html/Admin/Elements/EditCustomFieldValues delete mode 100644 rt/html/Admin/Elements/EditCustomFields delete mode 100644 rt/html/Admin/Elements/EditQueueWatchers delete mode 100644 rt/html/Admin/Elements/EditScrip delete mode 100644 rt/html/Admin/Elements/EditScrips delete mode 100644 rt/html/Admin/Elements/EditTemplates delete mode 100644 rt/html/Admin/Elements/EditUserComments delete mode 100644 rt/html/Admin/Elements/GroupTabs delete mode 100644 rt/html/Admin/Elements/Header delete mode 100644 rt/html/Admin/Elements/ListGlobalCustomFields delete mode 100644 rt/html/Admin/Elements/ListGlobalScrips delete mode 100644 rt/html/Admin/Elements/ModifyQueue delete mode 100644 rt/html/Admin/Elements/ModifyTemplate delete mode 100644 rt/html/Admin/Elements/ModifyUser delete mode 100644 rt/html/Admin/Elements/QueueRightsForUser delete mode 100644 rt/html/Admin/Elements/QueueTabs delete mode 100644 rt/html/Admin/Elements/SelectCustomFieldType delete mode 100644 rt/html/Admin/Elements/SelectGroups delete mode 100644 rt/html/Admin/Elements/SelectModifyGroup delete mode 100644 rt/html/Admin/Elements/SelectModifyQueue delete mode 100644 rt/html/Admin/Elements/SelectModifyUser delete mode 100644 rt/html/Admin/Elements/SelectNewGroupMembers delete mode 100644 rt/html/Admin/Elements/SelectRights delete mode 100644 rt/html/Admin/Elements/SelectScrip delete mode 100644 rt/html/Admin/Elements/SelectScripAction delete mode 100644 rt/html/Admin/Elements/SelectScripCondition delete mode 100644 rt/html/Admin/Elements/SelectSingleOrMultiple delete mode 100644 rt/html/Admin/Elements/SelectStage delete mode 100644 rt/html/Admin/Elements/SelectTemplate delete mode 100644 rt/html/Admin/Elements/SelectUsers delete mode 100644 rt/html/Admin/Elements/SystemTabs delete mode 100644 rt/html/Admin/Elements/Tabs delete mode 100644 rt/html/Admin/Elements/UserTabs delete mode 100644 rt/html/Admin/Global/CustomField.html delete mode 100644 rt/html/Admin/Global/CustomFields.html delete mode 100644 rt/html/Admin/Global/GroupRights.html delete mode 100644 rt/html/Admin/Global/Scrip.html delete mode 100644 rt/html/Admin/Global/Scrips.html delete mode 100644 rt/html/Admin/Global/Template.html delete mode 100644 rt/html/Admin/Global/Templates.html delete mode 100644 rt/html/Admin/Global/UserRights.html delete mode 100644 rt/html/Admin/Global/index.html delete mode 100644 rt/html/Admin/Groups/GroupRights.html delete mode 100644 rt/html/Admin/Groups/Members.html delete mode 100644 rt/html/Admin/Groups/Modify.html delete mode 100644 rt/html/Admin/Groups/UserRights.html delete mode 100644 rt/html/Admin/Groups/index.html delete mode 100644 rt/html/Admin/Queues/CustomField.html delete mode 100644 rt/html/Admin/Queues/CustomFields.html delete mode 100644 rt/html/Admin/Queues/GroupRights.html delete mode 100644 rt/html/Admin/Queues/Modify.html delete mode 100644 rt/html/Admin/Queues/People.html delete mode 100644 rt/html/Admin/Queues/Scrip.html delete mode 100644 rt/html/Admin/Queues/Scrips.html delete mode 100644 rt/html/Admin/Queues/Template.html delete mode 100644 rt/html/Admin/Queues/Templates.html delete mode 100644 rt/html/Admin/Queues/UserRights.html delete mode 100644 rt/html/Admin/Queues/index.html delete mode 100644 rt/html/Admin/Users/Modify.html delete mode 100644 rt/html/Admin/Users/Prefs.html delete mode 100644 rt/html/Admin/Users/index.html delete mode 100644 rt/html/Admin/index.html delete mode 100644 rt/html/Approvals/Display.html delete mode 100644 rt/html/Approvals/Elements/Approve delete mode 100644 rt/html/Approvals/Elements/PendingMyApproval delete mode 100644 rt/html/Approvals/Elements/ShowDependency delete mode 100644 rt/html/Approvals/Elements/Tabs delete mode 100644 rt/html/Approvals/index.html delete mode 100644 rt/html/Elements/BevelBoxRaisedEnd delete mode 100644 rt/html/Elements/BevelBoxRaisedStart delete mode 100644 rt/html/Elements/Callback delete mode 100644 rt/html/Elements/Checkbox delete mode 100644 rt/html/Elements/CreateTicket delete mode 100644 rt/html/Elements/Error delete mode 100644 rt/html/Elements/Footer delete mode 100644 rt/html/Elements/GotoTicket delete mode 100644 rt/html/Elements/Header delete mode 100644 rt/html/Elements/ListActions delete mode 100644 rt/html/Elements/Login delete mode 100644 rt/html/Elements/Menu delete mode 100644 rt/html/Elements/MessageBox delete mode 100644 rt/html/Elements/MyRequests delete mode 100644 rt/html/Elements/MyTickets delete mode 100644 rt/html/Elements/PageLayout delete mode 100644 rt/html/Elements/Quicksearch delete mode 100644 rt/html/Elements/Refresh delete mode 100644 rt/html/Elements/Section delete mode 100644 rt/html/Elements/SelectAttachmentField delete mode 100644 rt/html/Elements/SelectBoolean delete mode 100644 rt/html/Elements/SelectCustomFieldOperator delete mode 100644 rt/html/Elements/SelectCustomFieldValue delete mode 100644 rt/html/Elements/SelectDate delete mode 100644 rt/html/Elements/SelectDateRelation delete mode 100644 rt/html/Elements/SelectDateType delete mode 100644 rt/html/Elements/SelectEqualityOperator delete mode 100644 rt/html/Elements/SelectGroups delete mode 100644 rt/html/Elements/SelectLang delete mode 100644 rt/html/Elements/SelectLinkType delete mode 100644 rt/html/Elements/SelectMatch delete mode 100644 rt/html/Elements/SelectNewTicketQueue delete mode 100644 rt/html/Elements/SelectOwner delete mode 100644 rt/html/Elements/SelectQueue delete mode 100644 rt/html/Elements/SelectResultsPerPage delete mode 100644 rt/html/Elements/SelectSortOrder delete mode 100644 rt/html/Elements/SelectStatus delete mode 100644 rt/html/Elements/SelectTicketSortBy delete mode 100644 rt/html/Elements/SelectTicketTypes delete mode 100644 rt/html/Elements/SelectUsers delete mode 100644 rt/html/Elements/SelectWatcherType delete mode 100644 rt/html/Elements/SetupSessionCookie delete mode 100644 rt/html/Elements/ShadedBox delete mode 100644 rt/html/Elements/ShadedInputRow delete mode 100644 rt/html/Elements/ShadedRow delete mode 100644 rt/html/Elements/SimpleSearch delete mode 100644 rt/html/Elements/Submit delete mode 100644 rt/html/Elements/Tabs delete mode 100644 rt/html/Elements/TitleBoxEnd delete mode 100644 rt/html/Elements/TitleBoxStart delete mode 100644 rt/html/Elements/ViewUser delete mode 100644 rt/html/NoAuth/Logout.html delete mode 100644 rt/html/NoAuth/Reminder.html delete mode 100644 rt/html/NoAuth/images/back_home.gif delete mode 100644 rt/html/NoAuth/images/bplogo.gif delete mode 100644 rt/html/NoAuth/images/favicon.png delete mode 100644 rt/html/NoAuth/images/head_requestracker.gif delete mode 100644 rt/html/NoAuth/images/rt.jpg delete mode 100644 rt/html/NoAuth/images/space.gif delete mode 100644 rt/html/NoAuth/images/spacer.gif delete mode 100644 rt/html/NoAuth/images/squares_blue.gif delete mode 100644 rt/html/NoAuth/webrt.css delete mode 100644 rt/html/REST/1.0/Forms/queue/default delete mode 100644 rt/html/REST/1.0/Forms/queue/ns delete mode 100644 rt/html/REST/1.0/Forms/ticket/attachments delete mode 100644 rt/html/REST/1.0/Forms/ticket/default delete mode 100644 rt/html/REST/1.0/Forms/ticket/history delete mode 100644 rt/html/REST/1.0/Forms/ticket/links delete mode 100644 rt/html/REST/1.0/Forms/user/default delete mode 100644 rt/html/REST/1.0/Forms/user/ns delete mode 100644 rt/html/REST/1.0/NoAuth/mail-gateway delete mode 100644 rt/html/REST/1.0/autohandler delete mode 100644 rt/html/REST/1.0/dhandler delete mode 100644 rt/html/REST/1.0/logout delete mode 100644 rt/html/REST/1.0/search/dhandler delete mode 100644 rt/html/REST/1.0/search/ticket delete mode 100644 rt/html/REST/1.0/ticket/comment delete mode 100644 rt/html/REST/1.0/ticket/link delete mode 100644 rt/html/REST/1.0/ticket/merge delete mode 100644 rt/html/Search/Bulk.html delete mode 100644 rt/html/Search/Elements/PickRestriction delete mode 100644 rt/html/Search/Elements/TicketHeader delete mode 100644 rt/html/Search/Elements/TicketHeaderCell delete mode 100644 rt/html/Search/Elements/TicketRow delete mode 100644 rt/html/Search/Listing.html delete mode 100644 rt/html/SelfService/Attachment/dhandler delete mode 100644 rt/html/SelfService/Closed.html delete mode 100644 rt/html/SelfService/Create.html delete mode 100644 rt/html/SelfService/Display.html delete mode 100644 rt/html/SelfService/Elements/GotoTicket delete mode 100644 rt/html/SelfService/Elements/Header delete mode 100644 rt/html/SelfService/Elements/MyRequests delete mode 100644 rt/html/SelfService/Elements/Tabs delete mode 100644 rt/html/SelfService/Error.html delete mode 100644 rt/html/SelfService/Prefs.html delete mode 100644 rt/html/SelfService/Update.html delete mode 100644 rt/html/SelfService/index.html delete mode 100644 rt/html/Ticket/Attachment/dhandler delete mode 100644 rt/html/Ticket/Create.html delete mode 100644 rt/html/Ticket/Display.html delete mode 100644 rt/html/Ticket/Elements/AddWatchers delete mode 100644 rt/html/Ticket/Elements/BulkLinks delete mode 100644 rt/html/Ticket/Elements/EditBasics delete mode 100644 rt/html/Ticket/Elements/EditCustomField delete mode 100644 rt/html/Ticket/Elements/EditCustomFields delete mode 100644 rt/html/Ticket/Elements/EditDates delete mode 100644 rt/html/Ticket/Elements/EditLinks delete mode 100644 rt/html/Ticket/Elements/EditPeople delete mode 100644 rt/html/Ticket/Elements/EditWatchers delete mode 100644 rt/html/Ticket/Elements/ShowAttachments delete mode 100644 rt/html/Ticket/Elements/ShowBasics delete mode 100644 rt/html/Ticket/Elements/ShowCustomFields delete mode 100644 rt/html/Ticket/Elements/ShowDates delete mode 100644 rt/html/Ticket/Elements/ShowDependencies delete mode 100644 rt/html/Ticket/Elements/ShowHistory delete mode 100644 rt/html/Ticket/Elements/ShowLink delete mode 100644 rt/html/Ticket/Elements/ShowLinks delete mode 100644 rt/html/Ticket/Elements/ShowMemberOf delete mode 100644 rt/html/Ticket/Elements/ShowMembers delete mode 100644 rt/html/Ticket/Elements/ShowMessageHeaders delete mode 100644 rt/html/Ticket/Elements/ShowMessageStanza delete mode 100644 rt/html/Ticket/Elements/ShowPeople delete mode 100644 rt/html/Ticket/Elements/ShowReferences delete mode 100644 rt/html/Ticket/Elements/ShowRequestor delete mode 100644 rt/html/Ticket/Elements/ShowSummary delete mode 100644 rt/html/Ticket/Elements/ShowTransaction delete mode 100644 rt/html/Ticket/Elements/Tabs delete mode 100644 rt/html/Ticket/History.html delete mode 100644 rt/html/Ticket/Modify.html delete mode 100644 rt/html/Ticket/ModifyAll.html delete mode 100644 rt/html/Ticket/ModifyDates.html delete mode 100644 rt/html/Ticket/ModifyLinks.html delete mode 100644 rt/html/Ticket/ModifyPeople.html delete mode 100644 rt/html/Ticket/Update.html delete mode 100644 rt/html/User/Delegation.html delete mode 100644 rt/html/User/Elements/DelegateRights delete mode 100644 rt/html/User/Elements/GroupTabs delete mode 100644 rt/html/User/Elements/Tabs delete mode 100644 rt/html/User/Groups/Members.html delete mode 100644 rt/html/User/Groups/Modify.html delete mode 100644 rt/html/User/Groups/index.html delete mode 100644 rt/html/User/Prefs.html delete mode 100644 rt/html/autohandler delete mode 100644 rt/html/index.html delete mode 100644 rt/html/l delete mode 100644 rt/install-sh delete mode 100644 rt/lib/RT.pm delete mode 100644 rt/lib/RT.pm.in delete mode 100755 rt/lib/RT/ACE.pm delete mode 100644 rt/lib/RT/ACE_Overlay.pm delete mode 100755 rt/lib/RT/ACL.pm delete mode 100644 rt/lib/RT/ACL_Overlay.pm delete mode 100644 rt/lib/RT/Action/AutoOpen.pm delete mode 100755 rt/lib/RT/Action/Autoreply.pm delete mode 100644 rt/lib/RT/Action/CreateTickets.pm delete mode 100644 rt/lib/RT/Action/EscalatePriority.pm delete mode 100755 rt/lib/RT/Action/Generic.pm delete mode 100755 rt/lib/RT/Action/Notify.pm delete mode 100755 rt/lib/RT/Action/NotifyAsComment.pm delete mode 100644 rt/lib/RT/Action/ResolveMembers.pm delete mode 100755 rt/lib/RT/Action/SendEmail.pm delete mode 100644 rt/lib/RT/Action/SetPriority.pm delete mode 100644 rt/lib/RT/Action/UserDefined.pm delete mode 100755 rt/lib/RT/Attachment.pm delete mode 100644 rt/lib/RT/Attachment_Overlay.pm delete mode 100755 rt/lib/RT/Attachments.pm delete mode 100644 rt/lib/RT/Attachments_Overlay.pm delete mode 100644 rt/lib/RT/Base.pm delete mode 100644 rt/lib/RT/CachedGroupMember.pm delete mode 100644 rt/lib/RT/CachedGroupMember_Overlay.pm delete mode 100644 rt/lib/RT/CachedGroupMembers.pm delete mode 100644 rt/lib/RT/CachedGroupMembers_Overlay.pm delete mode 100644 rt/lib/RT/Condition/AnyTransaction.pm delete mode 100644 rt/lib/RT/Condition/BeforeDue.pm delete mode 100755 rt/lib/RT/Condition/Generic.pm delete mode 100644 rt/lib/RT/Condition/Overdue.pm delete mode 100644 rt/lib/RT/Condition/OwnerChange.pm delete mode 100644 rt/lib/RT/Condition/PriorityExceeds.pm delete mode 100644 rt/lib/RT/Condition/QueueChange.pm delete mode 100644 rt/lib/RT/Condition/StatusChange.pm delete mode 100644 rt/lib/RT/Condition/UserDefined.pm delete mode 100755 rt/lib/RT/CurrentUser.pm delete mode 100644 rt/lib/RT/CustomField.pm delete mode 100644 rt/lib/RT/CustomFieldValue.pm delete mode 100644 rt/lib/RT/CustomFieldValues.pm delete mode 100644 rt/lib/RT/CustomFieldValues_Overlay.pm delete mode 100644 rt/lib/RT/CustomField_Overlay.pm delete mode 100644 rt/lib/RT/CustomFields.pm delete mode 100644 rt/lib/RT/CustomFields_Overlay.pm delete mode 100644 rt/lib/RT/Date.pm delete mode 100644 rt/lib/RT/EmailParser.pm delete mode 100755 rt/lib/RT/Group.pm delete mode 100755 rt/lib/RT/GroupMember.pm delete mode 100644 rt/lib/RT/GroupMember_Overlay.pm delete mode 100755 rt/lib/RT/GroupMembers.pm delete mode 100644 rt/lib/RT/GroupMembers_Overlay.pm delete mode 100644 rt/lib/RT/Group_Overlay.pm delete mode 100755 rt/lib/RT/Groups.pm delete mode 100644 rt/lib/RT/Groups_Overlay.pm delete mode 100644 rt/lib/RT/Handle.pm delete mode 100644 rt/lib/RT/I18N.pm delete mode 100644 rt/lib/RT/I18N/cs.pm delete mode 100644 rt/lib/RT/I18N/cs.po delete mode 100644 rt/lib/RT/I18N/de.po delete mode 100644 rt/lib/RT/I18N/en.po delete mode 100644 rt/lib/RT/I18N/es.po delete mode 100644 rt/lib/RT/I18N/fi.po delete mode 100644 rt/lib/RT/I18N/fr.po delete mode 100644 rt/lib/RT/I18N/he.po delete mode 100644 rt/lib/RT/I18N/i_default.pm delete mode 100644 rt/lib/RT/I18N/it.po delete mode 100644 rt/lib/RT/I18N/ja.po delete mode 100644 rt/lib/RT/I18N/nl.po delete mode 100644 rt/lib/RT/I18N/no.po delete mode 100644 rt/lib/RT/I18N/pt_br.po delete mode 100644 rt/lib/RT/I18N/ru.po delete mode 100644 rt/lib/RT/I18N/zh_cn.po delete mode 100644 rt/lib/RT/I18N/zh_tw.po delete mode 100644 rt/lib/RT/Interface/CLI.pm delete mode 100755 rt/lib/RT/Interface/Email.pm delete mode 100644 rt/lib/RT/Interface/Email/Auth/MailFrom.pm delete mode 100644 rt/lib/RT/Interface/Email/Filter/SpamAssassin.pm delete mode 100644 rt/lib/RT/Interface/REST.pm delete mode 100644 rt/lib/RT/Interface/Web.pm delete mode 100644 rt/lib/RT/Link.pm delete mode 100644 rt/lib/RT/Link_Overlay.pm delete mode 100644 rt/lib/RT/Links.pm delete mode 100644 rt/lib/RT/Links_Overlay.pm delete mode 100644 rt/lib/RT/Principal.pm delete mode 100644 rt/lib/RT/Principal_Overlay.pm delete mode 100644 rt/lib/RT/Principals.pm delete mode 100644 rt/lib/RT/Principals_Overlay.pm delete mode 100755 rt/lib/RT/Queue.pm delete mode 100644 rt/lib/RT/Queue_Overlay.pm delete mode 100755 rt/lib/RT/Queues.pm delete mode 100644 rt/lib/RT/Queues_Overlay.pm delete mode 100755 rt/lib/RT/Record.pm delete mode 100755 rt/lib/RT/Scrip.pm delete mode 100755 rt/lib/RT/ScripAction.pm delete mode 100644 rt/lib/RT/ScripAction_Overlay.pm delete mode 100755 rt/lib/RT/ScripActions.pm delete mode 100644 rt/lib/RT/ScripActions_Overlay.pm delete mode 100755 rt/lib/RT/ScripCondition.pm delete mode 100644 rt/lib/RT/ScripCondition_Overlay.pm delete mode 100755 rt/lib/RT/ScripConditions.pm delete mode 100644 rt/lib/RT/ScripConditions_Overlay.pm delete mode 100644 rt/lib/RT/Scrip_Overlay.pm delete mode 100755 rt/lib/RT/Scrips.pm delete mode 100644 rt/lib/RT/Scrips_Overlay.pm delete mode 100644 rt/lib/RT/Search/ActiveTicketsInQueue.pm delete mode 100644 rt/lib/RT/Search/Generic.pm delete mode 100644 rt/lib/RT/SearchBuilder.pm delete mode 100644 rt/lib/RT/StyleGuide.pod delete mode 100644 rt/lib/RT/System.pm delete mode 100755 rt/lib/RT/Template.pm delete mode 100644 rt/lib/RT/Template_Overlay.pm delete mode 100755 rt/lib/RT/Templates.pm delete mode 100644 rt/lib/RT/Templates_Overlay.pm delete mode 100755 rt/lib/RT/Ticket.pm delete mode 100644 rt/lib/RT/TicketCustomFieldValue.pm delete mode 100644 rt/lib/RT/TicketCustomFieldValue_Overlay.pm delete mode 100644 rt/lib/RT/TicketCustomFieldValues.pm delete mode 100644 rt/lib/RT/TicketCustomFieldValues_Overlay.pm delete mode 100644 rt/lib/RT/Ticket_Overlay.pm delete mode 100755 rt/lib/RT/Tickets.pm delete mode 100644 rt/lib/RT/Tickets_Overlay.pm delete mode 100644 rt/lib/RT/Tickets_Overlay_SQL.pm delete mode 100755 rt/lib/RT/Transaction.pm delete mode 100644 rt/lib/RT/Transaction_Overlay.pm delete mode 100755 rt/lib/RT/Transactions.pm delete mode 100644 rt/lib/RT/Transactions_Overlay.pm delete mode 100644 rt/lib/RT/URI.pm delete mode 100644 rt/lib/RT/URI/base.pm delete mode 100644 rt/lib/RT/URI/fsck_com_rt.pm delete mode 100755 rt/lib/RT/User.pm delete mode 100644 rt/lib/RT/User_Overlay.pm delete mode 100755 rt/lib/RT/Users.pm delete mode 100644 rt/lib/RT/Users_Overlay.pm delete mode 100644 rt/lib/t/00smoke.t delete mode 100644 rt/lib/t/00smoke.t.in delete mode 100644 rt/lib/t/01harness.t delete mode 100644 rt/lib/t/01harness.t.in delete mode 100644 rt/lib/t/02regression.t delete mode 100644 rt/lib/t/02regression.t.in delete mode 100644 rt/lib/t/03web.pl delete mode 100644 rt/lib/t/03web.pl.in delete mode 100644 rt/lib/t/04_send_email.pl delete mode 100644 rt/lib/t/04_send_email.pl.in delete mode 100644 rt/lib/t/data/8859-15-message-series/dir delete mode 100644 rt/lib/t/data/8859-15-message-series/msg1 delete mode 100644 rt/lib/t/data/8859-15-message-series/msg2 delete mode 100644 rt/lib/t/data/8859-15-message-series/msg3 delete mode 100644 rt/lib/t/data/8859-15-message-series/msg4 delete mode 100644 rt/lib/t/data/8859-15-message-series/msg5 delete mode 100644 rt/lib/t/data/8859-15-message-series/msg6 delete mode 100644 rt/lib/t/data/8859-15-message-series/msg7 delete mode 100644 rt/lib/t/data/crashes-file-based-parser delete mode 100644 rt/lib/t/data/multipart-alternative-with-umlaut delete mode 100644 rt/lib/t/data/multipart-report delete mode 100644 rt/lib/t/data/nested-mime-sample delete mode 100644 rt/lib/t/data/nested-rfc-822 delete mode 100644 rt/lib/t/data/new-ticket-from-iso-8859-1 delete mode 100644 rt/lib/t/data/new-ticket-from-iso-8859-1-full delete mode 100644 rt/lib/t/data/notes-uuencoded delete mode 100644 rt/lib/t/data/russian-subject-no-content-type delete mode 100644 rt/lib/t/data/text-html-in-russian delete mode 100644 rt/lib/t/data/text-html-with-umlaut delete mode 100644 rt/lib/t/regression/00placeholder delete mode 100644 rt/lib/t/regression/mime_tests delete mode 100644 rt/m4/rt_enable_layout.m4 delete mode 100644 rt/m4/rt_expand_var.m4 delete mode 100644 rt/m4/rt_layout.m4 delete mode 100644 rt/m4/rt_subst_expanded_arg.m4 delete mode 100644 rt/sbin/extract-message-catalog delete mode 100644 rt/sbin/extract_pod_tests delete mode 100644 rt/sbin/factory delete mode 100644 rt/sbin/license_tag delete mode 100644 rt/sbin/regression_harness delete mode 100644 rt/sbin/rt-setup-database delete mode 100644 rt/sbin/rt-setup-database.in delete mode 100644 rt/sbin/rt-test-dependencies delete mode 100644 rt/sbin/rt-test-dependencies.in (limited to 'rt') diff --git a/rt/COPYING b/rt/COPYING deleted file mode 100755 index e77696ae8..000000000 --- a/rt/COPYING +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 675 Mass Ave, Cambridge, MA 02139, 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) 19yy - - 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., 675 Mass Ave, Cambridge, MA 02139, 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) 19yy 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/rt/Changelog b/rt/Changelog deleted file mode 100644 index 0f6bd10c3..000000000 --- a/rt/Changelog +++ /dev/null @@ -1,2913 +0,0 @@ - - - -Project "rt.3", Branch 0 Page 1 -Change Log Fri Feb 13 12:31:27 2004 - -rt.3.D000, C0, jesse, Thu Mar 13 20:43:23 2003, RT: Request Tracker, branch 3.0. - RT: Request Tracker, branch 3.0. - - Change Delta Brief Description - 10 1 Bumping the version to rt.3.0.0rc0 - 11 2 Minor CSS update. rollback fix; new database indices; - copyright update - 15 3 removing the old REST API - 16 4 Performance work on 'WhoHaveRight'; bumping to 3.0.0rc2 - 12 5 fixing indices for postgres - 17 6 fixing fastcgi's ability to load webmux.pl on some platforms - 18 7 More performance work; backing out 'enhancements' that killed - system performance - 19 8 Caving in to the masses and making 'notify sender' - configurable - 20 9 finishing the notify stuff - 22 10 Bumping to RC3; fixing the display of 'This user's n highest - priority tix' - 23 11 New french translation - 25 12 Brazilian Portuguese translation - 26 13 Postgres fixes - 27 14 Postgres schema tweak - 28 15 Further postgres tweaks and fixes - 29 16 RT should now be less overzealous about opening and then - marking a ticket 'new' again - 30 17 Bumping to 3.0.0rc4 - 31 18 Minor fixes - Bumped to 3.0.0; - 2266 - postgres scrip creation bug - 2267 - Tickets not reopened after being stalled - 2265 - Fixed css nits from blaise - Unreported - Fixed quick-search bug - 32 19 Added better error checking for failed ticket creation - 33 20 A tiny bit of extra data passing for some callbacks - 35 21 New czech translation - 37 22 Updated dependencies - 36 23 Updated Spanish translation - 38 24 Updates for RT RPC interface from AMS - 39 25 Many users should be able to have a blank address; neew test - suite to ensure this - 50 26 Integrating rafael's failing test suite and proposed fix from - autrijus - 51 27 Changing address used in example to not send mail to author - 52 28 More I18N testing for rafael - 53 29 Added preliminary left to right hebrew translation - 55 30 #2365 Removing outdated Mason setup parameter - 56 31 Testing fixes for mail authentication/authorization - 57 32 Testing and fixing binary attachment corruption - 58 33 Better binary attachment handling fix from autrijus - 59 34 Bumping to RT 3.0.1pre2 - 60 35 SMTP and I18N fixes from autrijus tang. Updated chinese - translations - 61 36 New speedycgi support from vivek khera - 62 37 Bumping to version 3.0.1 - 63 38 Fixing a showmessagestanza bug found in RTIR - 65 39 Fixing an untainting bug in 3.0.1 - 66 40 Quicksearch bug fix from Stan - 67 41 updating autrijus' autohandler patch. seems to break lots of - stuff - 68 42 Bumping to 3.0.2pre1 - 69 43 make ids clicky - 70 44 fixing utf8 tainting issue in autohandler; bumped to 3.0.2pre2 - 71 45 Another go at fixing the ARRAY() issue; bumping to 3.0.2pre3 - 72 46 bulk links - 73 47 I18N patches from autrijus; bouncing to 3.0.2pre4 - 75 48 bumped version to 3.0.2pre5; attachments performance fixes; - utf-8 mailgateway fixes; more extension hooks; template - updates for approvals - 76 49 [#2437] CanonicalizeEmailAddress fixes; [# 2449] html fixes - for right editing; [# 2457] email addresses weren't always - being canonicalized - 77 50 Fixing bogus anchor tags - 78 51 More performance work on WhoHaveRight; removing an extra join - 79 52 Cleaning up RT tag processing - 80 53 Importing utf8 fixes, _Vendor overlay support from ourinternet - 81 54 Bumping the version to 3.0.2pre6 - 82 55 Bumping the version to RT 3.0.2 - 83 56 merge from ourinternet; one CreateTickets fix and some utf8 - updates - 85 57 Robert's updated search stuff - 86 58 Fix for #2602 - make test fails on _Config.pm - 87 59 Including norwegian bokmal translation - 14 60 #2539: Re: [rt-users] unexpected usage: change sort order with - column headers in search window - 88 61 Fix to honor '$LogDir' for LogToFile - 89 62 #2603: /opt/rt3/share/doc should not be a file. - 90 63 Merging utf8 fixes from autrijus tang - 91 64 Fixing an upgrade bug from 3.0.2->3.0.3 - 92 65 MIME::Words encoding fixes for mail sending - 93 66 Additional work on the SQLite port - 95 67 Merge from ourinternet: UTF8 fixes; more configurable apache - sessions; - 96 68 ACL HasRight system replaced with an algorithm that does more - looking ahead - 97 69 A fix to Tickets_Overlay.pm to make the 'Count' methods - actually do a count, not a full SELECT - 98 70 Further UTF8-fixed from autrijus - 99 71 Bumping the version to 3.0.3pre1 - 100 72 update layout fix - 101 73 #2662 Fixing an overly restrictive ACL check on group creation - 102 74 #2657 Web UI Scrip creation bug - 103 75 #2652 - de.po updates - 105 76 #2658 Cosmetic issue with Scrip menu listing - 106 77 fix for FastCGI and SpeedyCGI setgidness with weird - environments - 107 78 Continued performance improvements for caching - 108 79 Log path enhancment to deal more gracefully with absolutely - specified logfile paths - 109 80 CF defaults; fix Starts set - 110 81 ACL cache made postgres safe - 111 82 Fixing an acl bug in Principal_Overlay introduced after 3.0.2 - and a possible 'Deep' transaction issue. now requires - DBIx::SearchBuilder 0.83_05 or newer - 112 83 #2678 Fixing crit messages in RT::User - 113 84 Bumping DBIx::SearchBuilder requirement to 0.84 - 115 85 The "rt" program, branch 3.0. - 117 86 pass title to Header - 116 87 Better testing for internationalization of outoging messages; - slight refactoring to SendEmail to be more testable; added - missing deps to EmailParser - 118 88 Bump to 3.0.3pre2; fix a misspelled right in Queue.pm (#2686) - 119 89 #2721 - 'id' attribute had mixed casing. this bothers certain - databases (Sybase) - 120 90 Header & Logout take URL - 121 91 Fixes for: Bogus message headers containing high-bit - characters; database handle reconnections; postgres test suite - failures - 123 92 support group & queue acl setting from rt-setup-database - 125 93 add TakeTicket, StealTicket rights - 122 94 Bumping version to 3.0.3pre3, bumping searchbuilder dependency - 126 95 Really bumping the version to 3.0.3pre3 - 129 96 Various fixes from a pull-up of the ourinternet branch - 128 97 #2605 - SpamAssassin Filter returns the wrong codes on - success/failure - 127 98 Fixes the cascading style sheet to properly reference message - bodies - 130 99 Attempting to be smarter about guessing encodings for outgoing - mail - 131 100 Fixing search navigation links (they were made to disappear) - 132 101 #2776 - 'new' ACL cache had bad behaviour. rolled back to - older cache and added tests - 133 102 On postgres, RT didn't previously cope well with multipart - messages including non-plain parts containing non-ascii - 135 103 Efficiency tweaks for WhoHaveRight - 136 104 Bumping version to RT 3.0.3pre4 - 137 105 #2813 Duplicate tickets created at the same time could cause a - user creation race condition - 138 106 Importing minor bugfixes from ourinternet - 139 107 #2816 new callback to ShowLinks - 150 108 #2799: Display URIs instead of HREFs in ticket display - 151 109 #2797 Clean up automatich chmodding on installation - 152 110 ShowRequestor takes path - 153 111 SystemInternal group ACLs in setup - 155 112 Better encoding and error checking for message headers - 156 113 better handle notification messages containing only text/html - content. - 157 114 Bumping to 3.0.3pre5 - 158 115 More I18N fixes from ourinternet - 159 116 Bumping version to RC-1 - 160 117 Another shot at the header encoding fix - 161 118 Mitya's failing processing of html email - 162 119 Bumping to 3.0.3rc2 - 163 120 Anonymizing addresses in mitya's submitted testcases - 165 121 Better handling of malformed email messages - 166 122 Bumping version to 3.0rc3 - 167 123 #2850 - With some configurations, users could not create new - tickets with 'new' requestors - Bumped to 3.0 RC 4 - 168 124 Scrip data updates weren't propagating to parent Ticket - objects; Bumping to 3.0.3 - 169 125 CustomField rights checking was overly restrictive for users - without queue-specific rights - 170 126 I18N mail testing was was being cavalier with the state of - acls after its testing. (clone of 3.0.C167) - 171 127 Ticket Update.html fix to not doubly load content - 172 128 Fixing postgres sortorder bug unmased by searchbuilder fix - 176 129 Applying POD patches from ourinternet (clone of 3.0.C173) - 177 130 UTF8, Custom Field and text message rendering fixes from - ourinternet - 178 131 #2843 Date relations were too strict in RT::Tickets searches - 179 132 #2847: allow URI Resolver to render itself - 173 133 ShowMessageHeaders; make headers clicky - 180 134 use RTIR callbacks - 175 135 Updating rt-setup-database to take acl and schema file names - on the commandline - 181 136 Refactored Users::WhoHaveRight from Chris Audley at Blackrock - 182 137 Download link in ShowTransaction - 185 138 Fix for speedycgi disappearing database connections - 183 139 #2873: Fix for insufficently agressive loop culling - 186 140 Fix for nested email message parsing - 187 141 Split the HasRight ACL query into two parts. It's now two - small and light SQL queries, instead of one big one that - overwhelmed databases - 188 142 Stylistic cleanups for HasRight optimizations - 189 143 Relationship transactions are recorded and displayed more - robustly - 190 144 Bumping the version to 3.0.4pre1 - 191 145 Updated french translation from Blaise Thauvin - 13 146 Bumping to 3.0.4RC1 - 192 147 Attachment display bug fix from autrijus tang - 193 148 Bumping the version to 3.0.4RC2 - 198 149 ShowAttachments had a relative path which hurt extensions - 199 150 README updates to indicate deprecated dependencies - 200 151 Debugging framework cleanup - 201 152 Bumping version to 3.0.4 - 195 153 #3042: Make max inline body size configurable - 196 154 #3029 - better warning message on improper perms on mail in - 202 155 Initial commit of new commandline client support code - 203 156 More updates to the commandline client - 205 157 Removing ancient cli code that was accidentally added to the - repository - 206 158 Extended ACL edit routines to make it easier to use generic - routines in 3rd party apps - 24 159 Certain ACL checks could fail on postgres due to a marshalling - bug - 209 160 #1751: update second page in Bulk update - 208 161 #1651: URIs not escaped in ticket display - 210 162 A couple of fixes to better deal with creation of 'blank' - ticket requestors - 207 163 regression tests: use $RT::WebPath and RT_LIB_PATH - 211 164 Requestor searches had an extra join that they didn't need - 212 165 License tagger was tagging Makefile, not Makefile.in. - Reconfigured. - 213 166 Bumping to 3.0.5pre1 - 215 167 Merging internationalization fixes from ourinternet - 216 168 #2692: make $Domain an argument for SelectGroups - 219 169 #2855: User_Overlay and Template_Overlay fixes - 220 170 #2989: regexp changes for Subject and loop-detection - 221 171 3158: user can delete only with DeleteTicket right - 222 172 fixes for the importer - 223 173 Adding the RT coding style guide to the distribution - 225 174 One I18N 'fix' from ourinternet tainted attachment data, - breaking tests - 226 175 Code to catch execution problems within RT's web app server - was made more robust - 34 176 Failed user creation didn't always properly roll-back the - database - 227 177 [fsck.com #2378] personal permissions for installation - 228 178 #3199: normalize custom fields searching syntax - Global CF's - previously didn't allow the { } - 229 179 #3201: Perform more clever joining to enhance custom field - search results - 40 180 #3200 - AND MultipleSelect CFs together - OR all other CFs - together. - 42 181 Bumping version to 3.0.5-pre2 - 41 182 #3022: Update to German translation - 43 183 #3068: Better setting of Due dates via the web ui - 44 184 #3131: Preliminary support for Oracle from Brook Schonfield - 45 185 #3152: Updated russian .po file - 46 186 #2792: When finding out if someone is a queue watcher, check - groups recursively - 47 187 Bumping to 3.0.5pre3 - 49 188 Dependencies updated; performance and memory usage fixes for - ticket creation memory usage - 231 189 #3237: Queue-specific templates with the same name as global - templates will now override the globals for queue-related - scrips - 54 190 #3279: Make fsck.com-rt: URIs case insensitive - 230 191 #3230: Parser patch to make watchers searches more efficient - 218 192 #2955: wrapping in messagebox - 232 193 Old relationship update transactions weren't properly - displayed - 237 194 #2672: custom field values ordering - 235 195 #2653: Email.pm patch - 238 196 #3114: allow longer subject lines for postgres - 233 197 #3242: cannonicalize addresses in comments - 236 198 #3278: occasional internal server error in RT.pm - 239 199 #3309: switch lines in User/Prefs.html - 250 200 #3329: Email.pm patch - 252 201 #2687: add ticket subject to resolved template - 255 202 #2268: align fields in User/Prefs.html - 256 203 #2160: clarify that box deletes scrips - 259 204 #2773: don't allow searching for deleted tickets - 257 205 #2700: configurable home page ticket list length - 258 206 #2409: colons after labels in Create.html - 261 207 #3240: DeleteWatcher, not DelWatcher - 262 208 #3143: Italian translation - 251 209 #2617: custom field ordering - 260 210 #2558: allow access to CFs with no name - 263 211 #3281: form actions must not be paths - 266 212 #2693: show proper id in menu after creation - 265 213 #3118: change default unset mail address - 267 214 #3324: Apache::DBI must be 0.92 or newer - 253 215 Fixing improperly applied custom field editing patches - 268 216 Bumping version to 3.0.5pre4 - 269 217 #3341: edit comments in SiteConfig - 271 218 #3012: vertical alignment in Ticket/Elements/ShowPeople - 270 219 #3349: umlauts aren't correct in subject - 272 220 #3236: allow attachments without other txn contents - 273 221 #3105: CreateTickets doesn't set ticket type - 275 222 #3384: recursive merge patches - 276 223 #3354: an additional fix for avoiding the morning bug - 277 224 #3114: increase subject length in non-Postgres dbs - 278 225 Fixes to attempt to stop mysql 'morning bugs' with mysql - 280 226 Post 3.0.5pre3 - sometimes silently losing mail. fixed a - possible bug, improved testing - 281 227 More explicit warning about a lack of perl 5.8 - 282 228 fixing the new testdeps thing - 279 229 #2651: localize die/warn handlers - 64 230 Bumping to 3.0.5pre5 - 283 231 #3399: Message parsing fails for some types of report - 285 232 Better handling of apparently bogus email; rationalize mail - gateway error codes - 286 233 Bumping to 3.0.5pre6 - 287 234 Bumping to 3.0.5RC1 - 288 235 Patches to the cli from ams - 289 236 Custom field values couldn't be set to '0'; README updated for - apache2 - 290 237 RT 3.0.5 - 291 238 Fixing a couple bugs related to display of links - 292 239 fixing a multiple-signature-inclusion bug - 293 240 Bumping to 3.0.6RC1 - 295 241 Updated documentation for RT CLI tool - 296 242 Bumping to RT 3.0.6 - 297 243 Conditionalizing Text::Quoted display, so as to avoid utf8 - crashes - 299 244 Merging bugfixes from ourinternet - 300 245 A bunch of postgres correctness fixes - 301 246 #2346: Resolving a deprecation warning - 84 247 #3981: Ticket creation syntax fix - 298 248 bps #1032: SelfService fixes - 302 249 #3889: add/del fixes - 303 250 #3822: Fix for cli bug (Inapropriate use of arrayref) - 305 251 #3807: CLI example updates - 306 252 #3907: New default templates for user, ticket and queue - 308 253 More reference weakening - 307 254 User objects weren't always destroyed, due to a circular - reference - 310 255 Slightly better debugging on failure to send mail - 94 256 Deep recursion issue on localization handle; missing language - selector - 313 257 Adding back missing SelectLang - 311 258 #3566: EditCustomField supports Default for FreeformSingle - 312 259 Initial Informix port from akso.de - 316 260 #3765: TicketsSQL is case-sensitive - 317 261 #3613: searching on NOT LIKE - 318 262 #3877: don't strip multi-line headers - 319 263 #3551: Create values corrupted when adding new files - 321 264 #3993: warn when installing with mod_perl2 - 320 265 #4087: allow non-ISO dates in transaction searches - 322 266 #3439: custom fields patch - 323 267 #3855: require Locale::Maketext::Lexicon 0.31 - 325 268 #3856: /REST/1.0/search/tickets should work in UTC - 326 269 #3827: regression shouldn't drop db - 327 270 #3801: note when transaction content is ellided - 328 271 #3751: ParseNewMessageForTicketCcs - 332 272 #3776: new indices - 329 273 #3674: autohandler patch - 336 274 New schema relationships diagram in .dot format - 337 275 more work on the schema diagram - 330 276 #3601: SelectRights patch - 331 277 #3583: set Last Contacted date - 333 278 #4088: Postgres performance improvements - 335 279 fix attachment links in base RT - 338 280 Updating storable dependency, to keep redhat 9 users from - hurting themselves - 339 281 Small fix to ticket searching to cut down on # of joins needed - 104 282 Merging ourinternet's changes relative to 3.0.7pre2; UPGRADING - update; postgres installation fixes - 350 283 Bumping version to 3.0.7pre3 - 351 284 CLI changes - 352 285 CLI usage updates - 353 286 Bumping to 3.0.7rc1 - 361 287 Bumping to 3.0.7; Updated DBIx::SearchBuilder dependency - 362 288 Fixes to RT 3.0.7 upgrade instructions; Bumping to 3.0.7_01 - 355 289 Minor cleanups to RT cli tool - 356 290 Fixup to rt-setup-database tool for local schema - 357 291 Display.html takes TicketObj; Update.html uses it - 358 292 localization for link text, not whole link - 359 293 ProcessTicketCustomFieldUpdates takes TicketObj - 360 294 Transaction batching - 363 295 protect against reentrancy in Ticket::DESTROY - 365 296 FastCGI fix to make the CLI work - 366 297 #4415: Fix for imporeting merged tickets - 368 298 Regression and upgrade cleanups - 367 299 Ticket creation and updates via the Web UI were sometimes - encoded wrong - 369 300 CLI tool should pass through orderby arg - 370 301 Bumping to 3.0.8pre1 - 371 302 none - 372 303 Decode uuencoded attachments - 373 304 Fixing next/prev ticket navigation (#4461) it sometimes - disappeared. - 375 305 Ticket counts became inaccurate after repeated web searches - 376 306 Certain non-western From: headers were being mangled - 377 307 Numerous CLI improvements - 378 308 Bumping to 3.0.8pre2 - 379 309 Switching to new I18NSafe lowercasing behaviour for Pg - 380 310 Adding a new index doubles my performance on /index.html - 381 311 Importing fixes from ourinternet - 382 312 Researching email corruption - 197 313 Fixing CreaetTickets documentation - 383 314 #4572: Fix searching on links - 385 315 #4554: callbacks should be ordered - 386 316 #4552 arguments for AddCustomFieldValues - 387 317 #4455: Better handling of bad link URIs - 388 318 #3725: Making CLI display newly created tickets ids - 389 319 #3736: Backport RT 3.1 'inplace' layout - 390 320 #3813: the CreateTickets scripaction couldn't handle - customfields - 391 321 #3608: search by ccs and adminccs in addition to requestors - 114 322 #3066: crontool docs - 393 323 #4711: search ON Dates - 392 324 order SelfService tickets by numeric id - 395 325 Bumping to 3.0.8RC1 - 396 326 AutoOpen should set correct type for Status transaction - 397 327 Fixing apparent SQL error on logout. Actually bug in - localization - 21 328 #2587: turn off autocomplete in RT's search box - 309 329 #3660: add a 'timeout' flag to the rt-mailgate - 315 330 #3608: fixing quicksearch to work with new watcher search - 398 331 Allow RT::CurrentUser to load objects based on RT::User - objects passed in; Backported a fix to the Language Selector - for non-traditional languages; bumped to 3.0.8 - 399 332 Searching for role groups generated queries that were way too - complex - 48 333 First cut at new oracle code from Netzah - 501 334 Adding UTF8 support for oracle; Oracle install instructions; - searchbuilder dep bumped; bumping to 3.0.9pre2 - 502 335 Deleted tickets should never be found in searches - 503 336 #5212 Unicode issues with incoming mail with a charset or - encoding of UTF-8 (caps) - 500 337 Reversing our no-cache pragmas, since IE can't cope with them - over SSL - 506 338 A couple of perf fixes from autrijus which _require_ - SearchBuilder 0.97. Reduces long ticket display by 30% - 508 339 Bumping to 3.0.9pre3 - 509 340 RT now uses progressive rendering by default AND no longer - blocks the load of the CSS sheet; 3.0.9pre4 - 511 341 Optimizing column loads from autrijus' new column load patches - 512 342 Bumping to 3.0.9pre5 - 513 343 More performance work listing ticket Attachments - 515 344 Turning off autoflush for ticket attachments so we can a - content type - 516 345 #5178: Use less verbose html for ticket history - 517 346 Bumping to 3.0.9pre6 - 518 347 Improved next/prev handling for merged tickets - 519 348 Bumping to 3.0.9 - Noting preference for perl 5.8.3 - - rt.3.0.D348, C519, jesse, Fri Feb 13 12:30:42 2004, Bumping to 3.0.9 - Noting - preference for perl 5.8.3 - none - - rt.3.0.D347, C518, jesse, Thu Feb 12 00:21:35 2004, Improved next/prev - handling for merged tickets - From: Jesse - Date: Thu Feb 12 00:20:40 2004 - - none - - rt.3.0.D346, C517, jesse, Tue Feb 10 00:22:11 2004, Bumping to 3.0.9pre6 - From: Jesse - Date: Tue Feb 10 00:21:24 2004 - Warning: the original change was in the 'being_integrated' state - - none - - rt.3.0.D345, C516, jesse, Tue Feb 10 00:19:50 2004, #5178: Use less verbose - html for ticket history - From: Jesse - Date: Tue Feb 10 00:18:57 2004 - - none - - rt.3.0.D344, C515, jesse, Tue Feb 10 00:07:41 2004, Turning off autoflush for - ticket attachments so we can a content type - From: Jesse - Date: Tue Feb 10 00:02:40 2004 - - none - - rt.3.0.D343, C513, jesse, Mon Feb 9 23:48:40 2004, More performance work - listing ticket Attachments - From: Jesse - Date: Mon Feb 9 23:48:07 2004 - - none - - rt.3.0.D342, C512, jesse, Fri Feb 6 02:05:13 2004, Bumping to 3.0.9pre5 - none - - rt.3.0.D341, C511, jesse, Thu Feb 5 23:11:20 2004, Optimizing column loads - from autrijus' new column load patches - none - - rt.3.0.D340, C509, jesse, Wed Feb 4 17:56:57 2004, RT now uses progressive - rendering by default AND no longer blocks the load of the CSS sheet; 3.0.9pre4 - none - - rt.3.0.D339, C508, jesse, Wed Feb 4 16:42:08 2004, Bumping to 3.0.9pre3 - none - - rt.3.0.D338, C506, jesse, Wed Feb 4 15:06:36 2004, A couple of perf fixes - from autrijus which _require_ SearchBuilder 0.97. Reduces long ticket display - by 30% - none - - rt.3.0.D337, C500, jesse, Sun Feb 1 15:01:39 2004, Reversing our no-cache - pragmas, since IE can't cope with them over SSL - none - - rt.3.0.D336, C503, jesse, Wed Jan 28 19:56:55 2004, #5212 Unicode issues with - incoming mail with a charset or encoding of UTF-8 (caps) - none - - rt.3.0.D335, C502, jesse, Wed Jan 28 19:24:48 2004, Deleted tickets should - never be found in searches - none - - rt.3.0.D334, C501, jesse, Thu Jan 8 15:21:02 2004, Adding UTF8 support for - oracle; Oracle install instructions; searchbuilder dep bumped; bumping to - 3.0.9pre2 - none - - rt.3.0.D333, C48, jesse, Sun Jan 4 23:18:16 2004, First cut at new oracle - code from Netzah - From: Jesse - Date: Sun Jan 4 23:17:21 2004 - - none - - rt.3.0.D332, C399, jesse, Sat Jan 3 15:57:44 2004, Searching for role groups - generated queries that were way too complex - From: Jesse - Date: Sat Jan 3 15:57:50 2004 - - none - - rt.3.0.D331, C398, jesse, Fri Jan 2 16:22:47 2004, Allow RT::CurrentUser to - load objects based on RT::User objects passed in; Backported a fix to the - Language Selector for non-traditional languages; bumped to 3.0.8 - From: Jesse - Date: Fri Jan 2 16:22:55 2004 - - none - - rt.3.0.D330, C315, jesse, Fri Jan 2 15:10:37 2004, #3608: fixing quicksearch - to work with new watcher search - From: Jesse Vincent - Date: Sat Dec 13 15:31:06 2003 - - none - - rt.3.0.D329, C309, jesse, Fri Jan 2 15:10:02 2004, #3660: add a 'timeout' - flag to the rt-mailgate - From: Jesse Vincent - Date: Sat Dec 13 02:12:05 2003 - - none - - rt.3.0.D328, C21, jesse, Fri Jan 2 15:09:18 2004, #2587: turn off - autocomplete in RT's search box - From: Jesse Vincent - Date: Sat Dec 13 01:57:52 2003 - - none - - rt.3.0.D327, C397, jesse, Tue Dec 30 16:19:24 2003, Fixing apparent SQL error - on logout. Actually bug in localization - none - - rt.3.0.D326, C396, leira, Fri Dec 19 01:11:25 2003, AutoOpen should set - correct type for Status transaction - From: Linda L. Julien - Date: Thu Dec 18 23:56:15 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D325, C395, jesse, Wed Dec 17 14:12:38 2003, Bumping to 3.0.8RC1 - From: Jesse - Date: Thu Dec 18 15:00:12 2003 - - none - - rt.3.0.D324, C392, leira, Wed Dec 17 14:09:47 2003, order SelfService tickets - by numeric id - From: Linda Julien - Date: Mon Dec 15 04:21:15 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D323, C393, jesse, Mon Dec 15 19:28:46 2003, #4711: search ON Dates - From: Jesse - Date: Tue Dec 16 20:30:27 2003 - Warning: the original change was in the 'being_developed' state - - none - - rt.3.0.D322, C114, jesse, Sat Dec 13 01:32:42 2003, #3066: crontool docs - From: Jesse Vincent - Date: Sat Dec 13 00:38:04 2003 - - none - - rt.3.0.D321, C391, jesse, Sat Dec 13 01:32:12 2003, #3608: search by ccs and - adminccs in addition to requestors - From: Jesse Vincent - Date: Sat Dec 13 01:24:33 2003 - Warning: the original change was in the 'being_developed' state - - none - - rt.3.0.D320, C390, jesse, Sat Dec 13 01:29:24 2003, #3813: the CreateTickets - scripaction couldn't handle customfields - From: Jesse Vincent - Date: Sat Dec 13 01:22:56 2003 - - none - - rt.3.0.D319, C389, jesse, Sat Dec 13 01:28:24 2003, #3736: Backport RT 3.1 - 'inplace' layout - From: Jesse Vincent - Date: Sat Dec 13 01:15:39 2003 - - none - - rt.3.0.D318, C388, jesse, Sat Dec 13 01:28:13 2003, #3725: Making CLI display - newly created tickets ids - From: Jesse Vincent - Date: Sat Dec 13 01:12:20 2003 - - none - - rt.3.0.D317, C387, jesse, Sat Dec 13 01:27:59 2003, #4455: Better handling of - bad link URIs - From: Jesse Vincent - Date: Fri Dec 12 23:33:09 2003 - - none - - rt.3.0.D316, C386, jesse, Sat Dec 13 01:27:41 2003, #4552 arguments for - AddCustomFieldValues - From: Jesse Vincent - Date: Fri Dec 12 23:23:08 2003 - - none - - rt.3.0.D315, C385, jesse, Sat Dec 13 01:27:17 2003, #4554: callbacks should be - ordered - From: Jesse Vincent - Date: Fri Dec 12 23:14:57 2003 - - none - - rt.3.0.D314, C383, jesse, Sat Dec 13 01:27:06 2003, #4572: Fix searching on - links - From: Jesse Vincent - Date: Fri Dec 12 23:11:24 2003 - - none - - rt.3.0.D313, C197, jesse, Fri Dec 12 23:18:59 2003, Fixing CreaetTickets - documentation - From: Jesse Vincent - Date: Tue Jul 8 19:59:48 2003 - - none - - rt.3.0.D312, C382, jesse, Thu Dec 11 12:58:27 2003, Researching email - corruption - From: Jesse - Date: Fri Dec 12 14:02:37 2003 - - none - - rt.3.0.D311, C381, jesse, Mon Dec 8 03:06:53 2003, Importing fixes from - ourinternet - From: Jesse - Date: Tue Dec 9 04:10:35 2003 - - none - - rt.3.0.D310, C380, jesse, Mon Dec 8 02:52:37 2003, Adding a new index doubles - my performance on /index.html - From: Jesse - Date: Tue Dec 9 03:53:40 2003 - - none - - rt.3.0.D309, C379, jesse, Sat Dec 6 21:06:31 2003, Switching to new I18NSafe - lowercasing behaviour for Pg - From: Jesse - Date: Sun Dec 7 22:11:09 2003 - - none - - rt.3.0.D308, C378, jesse, Fri Dec 5 16:51:11 2003, Bumping to 3.0.8pre2 - From: Jesse - Date: Sat Dec 6 17:43:47 2003 - - none - - rt.3.0.D307, C377, leira, Fri Dec 5 16:45:20 2003, Numerous CLI improvements - From: Linda Julien - Date: Fri Dec 5 03:09:04 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D306, C376, jesse, Wed Dec 3 01:15:23 2003, Certain non-western From: - headers were being mangled - From: Jesse Vincent - Date: Wed Dec 3 01:14:25 2003 - - none - - rt.3.0.D305, C375, jesse, Tue Dec 2 19:05:41 2003, Ticket counts became - inaccurate after repeated web searches - From: Jesse Vincent - Date: Tue Dec 2 19:03:18 2003 - - none - - rt.3.0.D304, C373, jesse, Tue Dec 2 18:36:05 2003, Fixing next/prev ticket - navigation (#4461) it sometimes disappeared. - From: Jesse Vincent - Date: Tue Dec 2 18:34:07 2003 - - none - - rt.3.0.D303, C372, jesse, Thu Nov 27 12:28:56 2003, Decode uuencoded - attachments - From: Jesse - Date: Fri Nov 28 13:32:25 2003 - - none - - rt.3.0.D302, C371, jesse, Thu Nov 27 02:00:59 2003, none - From: Jesse - Date: Fri Nov 28 03:05:10 2003 - - none - - rt.3.0.D301, C370, jesse, Tue Nov 25 22:24:45 2003, Bumping to 3.0.8pre1 - none - - rt.3.0.D300, C369, leira, Fri Nov 21 12:30:08 2003, CLI tool should pass - through orderby arg - From: Linda Julien - Date: Fri Nov 21 12:22:20 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D299, C367, jesse, Fri Nov 21 00:24:44 2003, Ticket creation and - updates via the Web UI were sometimes encoded wrong - From: Jesse - Date: Sat Nov 22 01:17:10 2003 - - none - - rt.3.0.D298, C368, jesse, Fri Nov 21 00:21:32 2003, Regression and upgrade - cleanups - From: Jesse - Date: Sat Nov 22 01:20:08 2003 - - none - - rt.3.0.D297, C366, jesse, Thu Nov 20 17:44:16 2003, #4415: Fix for imporeting - merged tickets - From: Jesse - Date: Fri Nov 21 18:47:53 2003 - - none - - rt.3.0.D296, C365, jesse, Thu Nov 20 17:22:51 2003, FastCGI fix to make the - CLI work - From: Jesse - Date: Fri Nov 21 18:24:18 2003 - - none - - rt.3.0.D295, C363, leira, Thu Nov 20 17:21:32 2003, protect against reentrancy - in Ticket::DESTROY - From: Linda L. Julien - Date: Wed Nov 19 15:45:47 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D294, C360, leira, Mon Nov 17 23:28:48 2003, Transaction batching - From: Linda Julien - Date: Mon Nov 17 18:52:37 2003 - Warning: the original change was in the 'being_developed' state - - From: Jesse - Date: Sun Nov 16 18:10:00 2003 - Warning: the original change was in the 'being_developed' state - - none - - rt.3.0.D293, C359, leira, Mon Nov 17 23:24:21 2003, - ProcessTicketCustomFieldUpdates takes TicketObj - From: Linda Julien - Date: Mon Nov 17 17:59:28 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D292, C358, leira, Mon Nov 17 23:21:05 2003, localization for link - text, not whole link - From: Linda Julien - Date: Mon Nov 17 17:33:58 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D291, C357, leira, Mon Nov 17 23:20:32 2003, Display.html takes - TicketObj; Update.html uses it - From: Linda Julien - Date: Mon Nov 17 17:19:05 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D290, C356, leira, Mon Nov 17 23:16:11 2003, Fixup to rt-setup-database - tool for local schema - From: Linda Julien - Date: Mon Nov 17 15:30:46 2003 - Warning: the original change was in the 'awaiting_integration' state - - From: Jesse - Date: Sun Nov 16 18:09:16 2003 - Warning: the original change was in the 'being_developed' state - - none - - rt.3.0.D289, C355, leira, Mon Nov 17 23:14:05 2003, Minor cleanups to RT cli - tool - From: Linda Julien - Date: Mon Nov 17 14:59:54 2003 - Warning: the original change was in the 'awaiting_integration' state - - From: Jesse - Date: Sun Nov 16 18:09:22 2003 - Warning: the original change was in the 'being_developed' state - - none - - rt.3.0.D288, C362, jesse, Mon Nov 17 22:53:56 2003, Fixes to RT 3.0.7 upgrade - instructions; Bumping to 3.0.7_01 - From: Jesse - Date: Tue Nov 18 23:56:48 2003 - - none - - rt.3.0.D287, C361, jesse, Mon Nov 17 19:30:11 2003, Bumping to 3.0.7; Updated - DBIx::SearchBuilder dependency - From: Jesse - Date: Tue Nov 18 20:25:24 2003 - Warning: the original change was in the 'being_developed' state - - none - - rt.3.0.D286, C353, jesse, Thu Nov 13 03:11:35 2003, Bumping to 3.0.7rc1 - From: Jesse - Date: Fri Nov 14 04:13:34 2003 - - none - - rt.3.0.D285, C352, jesse, Thu Nov 13 02:59:36 2003, CLI usage updates - From: Linda Julien - Date: Thu Nov 13 02:58:17 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D284, C351, leira, Thu Nov 13 02:41:21 2003, CLI changes - From: Linda Julien - Date: Thu Nov 13 02:36:17 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D283, C350, jesse, Mon Nov 10 01:26:11 2003, Bumping version to - 3.0.7pre3 - From: Jesse Vincent - Date: Mon Nov 10 01:24:27 2003 - - none - - rt.3.0.D282, C104, jesse, Mon Nov 10 01:16:01 2003, Merging ourinternet's - changes relative to 3.0.7pre2; UPGRADING update; postgres installation fixes - From: Jesse Vincent - Date: Mon Nov 10 01:10:08 2003 - - none - - rt.3.0.D281, C339, jesse, Thu Nov 6 21:11:46 2003, Small fix to ticket - searching to cut down on # of joins needed - From: Jesse Vincent - Date: Thu Nov 6 21:11:21 2003 - - none - - rt.3.0.D280, C338, jesse, Thu Nov 6 21:05:17 2003, Updating storable - dependency, to keep redhat 9 users from hurting themselves - From: Jesse Vincent - Date: Thu Nov 6 20:53:44 2003 - - none - - rt.3.0.D279, C335, leira, Tue Nov 4 21:11:39 2003, fix attachment links in - base RT - From: Linda L. Julien - Date: Tue Nov 4 16:42:55 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D278, C333, leira, Tue Nov 4 21:10:18 2003, #4088: Postgres - performance improvements - From: Linda L. Julien - Date: Tue Nov 4 16:25:57 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D277, C331, leira, Tue Nov 4 21:08:27 2003, #3583: set Last Contacted - date - From: Linda L. Julien - Date: Mon Nov 3 13:58:57 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D276, C330, leira, Tue Nov 4 21:06:14 2003, #3601: SelectRights patch - From: Linda L. Julien - Date: Sun Nov 2 22:03:23 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D275, C337, jesse, Tue Nov 4 18:18:39 2003, more work on the schema - diagram - From: Jesse Vincent - Date: Tue Nov 4 18:16:53 2003 - - none - - rt.3.0.D274, C336, jesse, Tue Nov 4 18:18:24 2003, New schema relationships - diagram in .dot format - From: Jesse Vincent - Date: Tue Nov 4 17:51:10 2003 - - none - - rt.3.0.D273, C329, leira, Tue Nov 4 17:52:14 2003, #3674: autohandler patch - From: Linda L. Julien - Date: Sun Nov 2 21:49:43 2003 - - none - - rt.3.0.D272, C332, leira, Tue Nov 4 17:29:08 2003, #3776: new indices - From: Linda L. Julien - Date: Tue Nov 4 15:25:39 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D271, C328, leira, Sun Nov 2 23:07:51 2003, #3751: - ParseNewMessageForTicketCcs - From: Linda L. Julien - Date: Sun Nov 2 21:16:07 2003 - - none - - rt.3.0.D270, C327, leira, Sun Nov 2 22:49:39 2003, #3801: note when - transaction content is ellided - From: Linda L. Julien - Date: Sun Nov 2 20:44:58 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D269, C326, leira, Sun Nov 2 22:31:42 2003, #3827: regression - shouldn't drop db - From: Linda L. Julien - Date: Sun Nov 2 20:17:48 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D268, C325, leira, Sun Nov 2 21:15:22 2003, #3856: /REST/1.0/search/ - tickets should work in UTC - From: Linda L. Julien - Date: Sun Nov 2 19:57:19 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D267, C323, leira, Sun Nov 2 21:14:48 2003, #3855: require - Locale::Maketext::Lexicon 0.31 - From: Linda L. Julien - Date: Sun Nov 2 19:36:37 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D266, C322, leira, Sun Nov 2 21:14:18 2003, #3439: custom fields patch - From: Linda L. Julien - Date: Sun Nov 2 19:11:11 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D265, C320, leira, Sun Nov 2 20:00:45 2003, #4087: allow non-ISO dates - in transaction searches - From: Linda L. Julien - Date: Sun Nov 2 18:28:45 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D264, C321, leira, Sun Nov 2 19:59:21 2003, #3993: warn when - installing with mod_perl2 - From: Linda L. Julien - Date: Sun Nov 2 18:47:57 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D263, C319, leira, Sun Nov 2 18:51:11 2003, #3551: Create values - corrupted when adding new files - From: Linda L. Julien - Date: Sun Nov 2 17:36:44 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D262, C318, leira, Sun Nov 2 18:50:09 2003, #3877: don't strip multi- - line headers - From: Linda L. Julien - Date: Sun Nov 2 16:32:21 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D261, C317, leira, Sun Nov 2 18:49:15 2003, #3613: searching on NOT - LIKE - From: Linda L. Julien - Date: Fri Oct 31 01:39:10 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D260, C316, leira, Fri Oct 31 11:59:11 2003, #3765: TicketsSQL is case- - sensitive - From: Linda L. Julien - Date: Thu Oct 30 16:46:33 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D259, C312, jesse, Fri Oct 31 11:58:43 2003, Initial Informix port from - akso.de - From: Jesse Vincent - Date: Thu Oct 30 13:03:54 2003 - - none - - rt.3.0.D258, C311, leira, Fri Oct 31 11:57:33 2003, #3566: EditCustomField - supports Default for FreeformSingle - From: Linda L. Julien - Date: Fri Oct 24 16:48:36 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D257, C313, jesse, Thu Oct 30 15:33:45 2003, Adding back missing - SelectLang - From: Jesse Vincent - Date: Thu Oct 30 15:31:35 2003 - Warning: the original change was in the 'being_developed' state - - none - - rt.3.0.D256, C94, jesse, Tue Oct 28 16:02:50 2003, Deep recursion issue on - localization handle; missing language selector - From: Jesse Vincent - Date: Tue Oct 28 16:01:40 2003 - - none - - rt.3.0.D255, C310, jesse, Wed Oct 22 00:33:40 2003, Slightly better debugging - on failure to send mail - From: Jesse Vincent - Date: Wed Oct 22 00:25:35 2003 - - none - - rt.3.0.D254, C307, jesse, Tue Oct 21 23:43:39 2003, User objects weren't - always destroyed, due to a circular reference - From: Jesse Vincent - Date: Mon Oct 20 19:02:08 2003 - - none - - rt.3.0.D253, C308, jesse, Tue Oct 21 23:35:50 2003, More reference weakening - From: Jesse Vincent - Date: Tue Oct 21 23:34:11 2003 - - none - - rt.3.0.D252, C306, jesse, Sun Oct 19 21:06:33 2003, #3907: New default - templates for user, ticket and queue - From: Jesse Vincent - Date: Sun Oct 19 21:05:48 2003 - - none - - rt.3.0.D251, C305, jesse, Sun Oct 19 21:00:11 2003, #3807: CLI example updates - From: Jesse Vincent - Date: Sun Oct 19 20:59:14 2003 - - none - - rt.3.0.D250, C303, jesse, Sun Oct 19 20:55:45 2003, #3822: Fix for cli bug - (Inapropriate use of arrayref) - From: Jesse Vincent - Date: Sun Oct 19 20:54:22 2003 - - none - - rt.3.0.D249, C302, jesse, Sun Oct 19 20:55:16 2003, #3889: add/del fixes - From: Jesse Vincent - Date: Sun Oct 19 20:25:21 2003 - - none - - rt.3.0.D248, C298, leira, Sun Oct 19 20:23:35 2003, bps #1032: SelfService - fixes - From: Linda Julien - Date: Wed Oct 8 18:39:07 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D247, C84, jesse, Sun Oct 19 20:23:21 2003, #3981: Ticket creation - syntax fix - From: Jesse Vincent - Date: Sun Oct 19 20:20:46 2003 - - none - - rt.3.0.D246, C301, jesse, Sun Oct 19 20:11:09 2003, #2346: Resolving a - deprecation warning - From: Jesse Vincent - Date: Sun Oct 19 20:10:25 2003 - - none - - rt.3.0.D245, C300, jesse, Thu Oct 16 20:03:36 2003, A bunch of postgres - correctness fixes - From: Jesse Vincent - Date: Thu Oct 16 20:00:27 2003 - - none - - rt.3.0.D244, C299, jesse, Thu Oct 16 20:02:08 2003, Merging bugfixes from - ourinternet - From: Jesse Vincent - Date: Tue Oct 14 12:29:53 2003 - - none - - rt.3.0.D243, C297, jesse, Wed Oct 8 11:47:30 2003, Conditionalizing - Text::Quoted display, so as to avoid utf8 crashes - From: Jesse Vincent - Date: Wed Oct 8 16:46:31 2003 - - none - - rt.3.0.D242, C296, jesse, Thu Sep 25 16:28:46 2003, Bumping to RT 3.0.6 - From: Jesse Vincent - Date: Thu Sep 25 16:27:53 2003 - - none - - rt.3.0.D241, C295, jesse, Thu Sep 25 15:13:08 2003, Updated documentation for - RT CLI tool - From: Jesse Vincent - Date: Thu Sep 25 15:12:46 2003 - - none - - rt.3.0.D240, C293, jesse, Mon Sep 22 16:21:10 2003, Bumping to 3.0.6RC1 - From: Jesse Vincent - Date: Mon Sep 22 16:20:02 2003 - - none - - rt.3.0.D239, C292, jesse, Mon Sep 22 16:21:00 2003, fixing a multiple- - signature-inclusion bug - From: Jesse Vincent - Date: Mon Sep 22 15:29:40 2003 - - none - - rt.3.0.D238, C291, jesse, Mon Sep 22 14:46:52 2003, Fixing a couple bugs - related to display of links - From: Jesse Vincent - Date: Mon Sep 22 14:44:12 2003 - - none - - rt.3.0.D237, C290, jesse, Mon Sep 8 14:18:29 2003, RT 3.0.5 - From: Jesse Vincent - Date: Mon Sep 8 14:12:19 2003 - - none - - rt.3.0.D236, C289, jesse, Mon Sep 8 13:47:05 2003, Custom field values - couldn't be set to '0'; README updated for apache2 - From: Jesse Vincent - Date: Mon Sep 8 13:45:41 2003 - - none - - rt.3.0.D235, C288, jesse, Sat Sep 6 01:52:41 2003, Patches to the cli from - ams - From: Jesse Vincent - Date: Sat Sep 6 01:50:41 2003 - - none - - rt.3.0.D234, C287, jesse, Tue Sep 2 18:16:15 2003, Bumping to 3.0.5RC1 - From: Jesse Vincent - Date: Tue Sep 2 18:15:51 2003 - - none - - rt.3.0.D233, C286, jesse, Fri Aug 29 21:10:44 2003, Bumping to 3.0.5pre6 - From: Jesse Vincent - Date: Fri Aug 29 18:01:40 2003 - - none - - rt.3.0.D232, C285, jesse, Fri Aug 29 21:10:24 2003, Better handling of - apparently bogus email; rationalize mail gateway error codes - From: Jesse Vincent - Date: Fri Aug 29 18:01:29 2003 - - none - - rt.3.0.D231, C283, jesse, Fri Aug 29 16:26:30 2003, #3399: Message parsing - fails for some types of report - From: Jesse Vincent - Date: Fri Aug 29 16:25:33 2003 - - none - - rt.3.0.D230, C64, jesse, Thu Aug 28 17:40:29 2003, Bumping to 3.0.5pre5 - From: Jesse Vincent - Date: Thu Aug 28 17:32:38 2003 - - none - - rt.3.0.D229, C279, leira, Thu Aug 28 17:39:37 2003, #2651: localize die/warn - handlers - From: Linda Julien - Date: Tue Aug 26 15:38:12 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D228, C282, jesse, Thu Aug 28 17:38:28 2003, fixing the new testdeps - thing - From: Jesse Vincent - Date: Thu Aug 28 17:38:07 2003 - - none - - rt.3.0.D227, C281, jesse, Thu Aug 28 17:34:18 2003, More explicit warning - about a lack of perl 5.8 - From: Jesse Vincent - Date: Thu Aug 28 17:30:47 2003 - - none - - rt.3.0.D226, C280, jesse, Thu Aug 28 17:33:15 2003, Post 3.0.5pre3 - sometimes - silently losing mail. fixed a possible bug, improved testing - From: Jesse Vincent - Date: Thu Aug 28 17:09:51 2003 - - none - - rt.3.0.D225, C278, jesse, Tue Aug 26 15:29:24 2003, Fixes to attempt to stop - mysql 'morning bugs' with mysql - From: Jesse Vincent - Date: Tue Aug 26 15:28:20 2003 - - none - - rt.3.0.D224, C277, leira, Tue Aug 26 15:04:20 2003, #3114: increase subject - length in non-Postgres dbs - From: Linda Julien - Date: Tue Aug 26 14:51:25 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D223, C276, leira, Tue Aug 26 15:03:17 2003, #3354: an additional fix - for avoiding the morning bug - From: Linda Julien - Date: Mon Aug 25 17:58:27 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D222, C275, leira, Tue Aug 26 15:02:16 2003, #3384: recursive merge - patches - From: Linda Julien - Date: Mon Aug 25 17:02:00 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D221, C273, leira, Mon Aug 25 16:33:53 2003, #3105: CreateTickets - doesn't set ticket type - From: Linda Julien - Date: Mon Aug 25 16:30:06 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D220, C272, leira, Mon Aug 25 15:53:13 2003, #3236: allow attachments - without other txn contents - From: Linda Julien - Date: Mon Aug 25 15:47:52 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D219, C270, leira, Mon Aug 25 15:13:31 2003, #3349: umlauts aren't - correct in subject - From: Linda Julien - Date: Mon Aug 25 13:55:52 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D218, C271, leira, Mon Aug 25 15:13:05 2003, #3012: vertical alignment - in Ticket/Elements/ShowPeople - From: Linda Julien - Date: Mon Aug 25 14:08:04 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D217, C269, leira, Mon Aug 25 14:45:12 2003, #3341: edit comments in - SiteConfig - From: Linda Julien - Date: Mon Aug 25 13:38:51 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D216, C268, jesse, Sun Aug 24 17:16:04 2003, Bumping version to - 3.0.5pre4 - From: Jesse Vincent - Date: Sun Aug 24 17:15:36 2003 - - none - - rt.3.0.D215, C253, jesse, Sun Aug 24 17:12:37 2003, Fixing improperly applied - custom field editing patches - From: Jesse Vincent - Date: Sun Aug 24 17:11:40 2003 - - none - - rt.3.0.D214, C267, leira, Sun Aug 24 14:57:37 2003, #3324: Apache::DBI must be - 0.92 or newer - From: Linda Julien - Date: Fri Aug 22 14:40:27 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D213, C265, leira, Fri Aug 22 13:30:09 2003, #3118: change default - unset mail address - From: Linda Julien - Date: Fri Aug 22 12:13:22 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D212, C266, leira, Fri Aug 22 13:29:46 2003, #2693: show proper id in - menu after creation - From: Linda Julien - Date: Fri Aug 22 12:39:53 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D211, C263, leira, Fri Aug 22 01:18:00 2003, #3281: form actions must - not be paths - From: Linda Julien - Date: Fri Aug 22 01:12:07 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D210, C260, leira, Fri Aug 22 01:13:07 2003, #2558: allow access to CFs - with no name - From: Linda Julien - Date: Thu Aug 21 22:36:35 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D209, C251, leira, Fri Aug 22 01:07:34 2003, #2617: custom field - ordering - From: Linda Julien - Date: Wed Aug 20 17:33:22 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D208, C262, leira, Fri Aug 22 01:00:21 2003, #3143: Italian translation - From: Linda Julien - Date: Fri Aug 22 00:52:11 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D207, C261, leira, Thu Aug 21 23:31:22 2003, #3240: DeleteWatcher, not - DelWatcher - From: Linda Julien - Date: Thu Aug 21 23:22:40 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D206, C258, leira, Thu Aug 21 23:07:01 2003, #2409: colons after labels - in Create.html - From: Linda Julien - Date: Thu Aug 21 17:23:04 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D205, C257, leira, Thu Aug 21 23:06:12 2003, #2700: configurable home - page ticket list length - From: Linda Julien - Date: Thu Aug 21 15:08:27 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D204, C259, leira, Thu Aug 21 22:37:27 2003, #2773: don't allow - searching for deleted tickets - From: Linda Julien - Date: Thu Aug 21 22:15:43 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D203, C256, leira, Thu Aug 21 14:09:59 2003, #2160: clarify that box - deletes scrips - From: Linda Julien - Date: Thu Aug 21 13:53:00 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D202, C255, leira, Thu Aug 21 14:09:27 2003, #2268: align fields in - User/Prefs.html - From: Linda Julien - Date: Thu Aug 21 13:21:00 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D201, C252, leira, Wed Aug 20 18:13:50 2003, #2687: add ticket subject - to resolved template - From: Linda Julien - Date: Wed Aug 20 17:58:22 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D200, C250, leira, Wed Aug 20 13:33:40 2003, #3329: Email.pm patch - From: Linda Julien - Date: Wed Aug 20 13:19:58 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D199, C239, leira, Tue Aug 19 23:05:34 2003, #3309: switch lines in - User/Prefs.html - From: Linda Julien - Date: Tue Aug 19 22:59:28 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D198, C236, leira, Tue Aug 19 22:47:07 2003, #3278: occasional internal - server error in RT.pm - From: Linda Julien - Date: Tue Aug 19 22:44:16 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D197, C233, leira, Tue Aug 19 22:28:05 2003, #3242: cannonicalize - addresses in comments - From: Linda Julien - Date: Tue Aug 19 22:21:57 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D196, C238, leira, Tue Aug 19 22:07:37 2003, #3114: allow longer - subject lines for postgres - From: Linda Julien - Date: Tue Aug 19 22:01:02 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D195, C235, leira, Tue Aug 19 21:54:16 2003, #2653: Email.pm patch - From: Linda Julien - Date: Tue Aug 19 19:57:12 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D194, C237, leira, Tue Aug 19 21:51:11 2003, #2672: custom field values - ordering - From: Linda Julien - Date: Tue Aug 19 21:19:44 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D193, C232, jesse, Mon Aug 18 22:16:09 2003, Old relationship update - transactions weren't properly displayed - From: Jesse Vincent - Date: Mon Aug 18 22:14:33 2003 - - none - - rt.3.0.D192, C218, leira, Thu Aug 14 13:37:04 2003, #2955: wrapping in - messagebox - From: Linda Julien - Date: Wed Aug 13 17:28:03 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D191, C230, jesse, Tue Aug 12 02:54:11 2003, #3230: Parser patch to - make watchers searches more efficient - From: Jesse Vincent - Date: Mon Aug 11 14:41:00 2003 - - none - - rt.3.0.D190, C54, jesse, Tue Aug 12 02:49:27 2003, #3279: Make fsck.com-rt: - URIs case insensitive - From: Jesse Vincent - Date: Mon Aug 11 15:25:07 2003 - - none - - rt.3.0.D189, C231, jesse, Tue Aug 12 02:47:19 2003, #3237: Queue-specific - templates with the same name as global templates will now override the globals - for queue-related scrips - From: Jesse Vincent - Date: Mon Aug 11 15:04:37 2003 - - none - - rt.3.0.D188, C49, jesse, Fri Aug 8 01:57:57 2003, Dependencies updated; - performance and memory usage fixes for ticket creation memory usage - From: Jesse Vincent - Date: Fri Aug 8 01:54:16 2003 - - none - - rt.3.0.D187, C47, jesse, Mon Aug 4 23:20:33 2003, Bumping to 3.0.5pre3 - From: Jesse Vincent - Date: Mon Aug 4 23:20:16 2003 - - none - - rt.3.0.D186, C46, jesse, Mon Aug 4 19:15:22 2003, #2792: When finding out if - someone is a queue watcher, check groups recursively - From: Jesse Vincent - Date: Mon Aug 4 19:14:50 2003 - - none - - rt.3.0.D185, C45, jesse, Mon Aug 4 18:55:13 2003, #3152: Updated russian .po - file - From: Jesse Vincent - Date: Mon Aug 4 18:50:35 2003 - - none - - rt.3.0.D184, C44, jesse, Mon Aug 4 18:27:40 2003, #3131: Preliminary support - for Oracle from Brook Schonfield - From: Jesse Vincent - Date: Mon Aug 4 18:26:08 2003 - - none - - rt.3.0.D183, C43, jesse, Mon Aug 4 16:19:07 2003, #3068: Better setting of - Due dates via the web ui - From: Jesse Vincent - Date: Mon Aug 4 16:18:50 2003 - - none - - rt.3.0.D182, C41, jesse, Mon Aug 4 16:02:01 2003, #3022: Update to German - translation - From: Jesse Vincent - Date: Mon Aug 4 16:01:08 2003 - - none - - rt.3.0.D181, C42, jesse, Thu Jul 31 13:34:50 2003, Bumping version to 3.0.5- - pre2 - From: Jesse Vincent - Date: Thu Jul 31 13:28:35 2003 - - none - - rt.3.0.D180, C40, jesse, Tue Jul 29 02:24:22 2003, #3200 - AND MultipleSelect - CFs together - OR all other CFs together. - From: Jesse Vincent - Date: Tue Jul 29 02:21:50 2003 - - none - - rt.3.0.D179, C229, jesse, Tue Jul 29 02:09:06 2003, #3201: Perform more clever - joining to enhance custom field search results - From: Jesse Vincent - Date: Tue Jul 29 02:06:22 2003 - - none - - rt.3.0.D178, C228, jesse, Tue Jul 29 01:17:12 2003, #3199: normalize custom - fields searching syntax - Global CF's previously didn't allow the { } - From: Jesse Vincent - Date: Tue Jul 29 01:16:28 2003 - - none - - rt.3.0.D177, C227, jesse, Mon Jul 28 01:39:28 2003, [fsck.com #2378] personal - permissions for installation - From: Robert - Date: Sun Jul 27 22:19:40 2003 - Warning: the original change was in the 'awaiting_integration' state - - install as current user option for configure - - rt.3.0.D176, C34, jesse, Mon Jul 28 00:00:12 2003, Failed user creation didn't - always properly roll-back the database - From: Jesse Vincent - Date: Sun Jul 27 23:59:16 2003 - - none - - rt.3.0.D175, C226, jesse, Sun Jul 27 23:52:28 2003, Code to catch execution - problems within RT's web app server was made more robust - From: Jesse Vincent - Date: Sun Jul 27 23:51:50 2003 - - none - - rt.3.0.D174, C225, jesse, Sun Jul 27 23:44:44 2003, One I18N 'fix' from - ourinternet tainted attachment data, breaking tests - From: Jesse Vincent - Date: Sun Jul 27 23:44:17 2003 - - none - - rt.3.0.D173, C223, jesse, Sun Jul 27 17:16:20 2003, Adding the RT coding style - guide to the distribution - From: Jesse Vincent - Date: Sun Jul 27 17:15:32 2003 - - none - - rt.3.0.D172, C222, jesse, Fri Jul 25 19:50:19 2003, fixes for the importer - From: Jesse Vincent - Date: Fri Jul 25 19:49:06 2003 - - none - - rt.3.0.D171, C221, leira, Fri Jul 25 14:02:49 2003, 3158: user can delete only - with DeleteTicket right - From: Linda Julien - Date: Fri Jul 25 02:44:41 2003 - Warning: the original change was in the 'being_developed' state - - none - - rt.3.0.D170, C220, leira, Fri Jul 25 14:01:38 2003, #2989: regexp changes for - Subject and loop-detection - From: Linda Julien - Date: Fri Jul 25 02:02:18 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D169, C219, leira, Fri Jul 25 13:52:47 2003, #2855: User_Overlay and - Template_Overlay fixes - From: Linda Julien - Date: Fri Jul 25 01:08:37 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D168, C216, leira, Fri Jul 25 13:45:37 2003, #2692: make $Domain an - argument for SelectGroups - From: Linda Julien - Date: Thu Jul 24 23:31:35 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D167, C215, jesse, Thu Jul 24 23:25:01 2003, Merging - internationalization fixes from ourinternet - From: Jesse Vincent - Date: Thu Jul 24 23:22:46 2003 - - none - - rt.3.0.D166, C213, jesse, Thu Jul 24 18:39:57 2003, Bumping to 3.0.5pre1 - From: Jesse Vincent - Date: Thu Jul 24 18:38:14 2003 - - none - - rt.3.0.D165, C212, jesse, Wed Jul 23 18:06:41 2003, License tagger was tagging - Makefile, not Makefile.in. Reconfigured. - From: Jesse Vincent - Date: Wed Jul 23 18:03:14 2003 - - none - - rt.3.0.D164, C211, jesse, Wed Jul 23 15:23:11 2003, Requestor searches had an - extra join that they didn't need - From: Jesse Vincent - Date: Wed Jul 23 15:22:34 2003 - - none - - rt.3.0.D163, C207, leira, Tue Jul 22 03:10:34 2003, regression tests: use - $RT::WebPath and RT_LIB_PATH - From: Linda L. Julien - Date: Mon Jul 21 18:12:56 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D162, C210, jesse, Tue Jul 22 02:52:01 2003, A couple of fixes to - better deal with creation of 'blank' ticket requestors - From: Jesse Vincent - Date: Tue Jul 22 02:50:09 2003 - - none - - rt.3.0.D161, C208, leira, Tue Jul 22 01:56:30 2003, #1651: URIs not escaped in - ticket display - From: Linda Julien - Date: Mon Jul 21 18:33:24 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D160, C209, leira, Tue Jul 22 01:54:49 2003, #1751: update second page - in Bulk update - From: Linda Julien - Date: Mon Jul 21 20:54:02 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D159, C24, jesse, Fri Jul 18 18:59:13 2003, Certain ACL checks could - fail on postgres due to a marshalling bug - From: Jesse Vincent - Date: Fri Jul 18 17:06:39 2003 - - none - - rt.3.0.D158, C206, jesse, Fri Jul 18 18:58:22 2003, Extended ACL edit routines - to make it easier to use generic routines in 3rd party apps - From: Jesse Vincent - Date: Fri Jul 18 17:04:15 2003 - - none - - rt.3.0.D157, C205, jesse, Mon Jul 14 02:51:28 2003, Removing ancient cli code - that was accidentally added to the repository - From: Jesse Vincent - Date: Sun Jul 13 23:47:51 2003 - - none - - rt.3.0.D156, C203, jesse, Sun Jul 13 22:35:44 2003, More updates to the - commandline client - From: Jesse Vincent - Date: Sun Jul 13 19:32:10 2003 - - none - - rt.3.0.D155, C202, jesse, Sun Jul 13 21:33:58 2003, Initial commit of new - commandline client support code - From: Jesse Vincent - Date: Sun Jul 13 18:33:29 2003 - - none - - rt.3.0.D154, C196, jesse, Sun Jul 13 18:06:09 2003, #3029 - better warning - message on improper perms on mail in - From: Jesse Vincent - Date: Tue Jul 8 16:59:59 2003 - - none - - rt.3.0.D153, C195, jesse, Sun Jul 13 18:05:41 2003, #3042: Make max inline - body size configurable - From: Jesse Vincent - Date: Tue Jul 8 16:55:28 2003 - - none - - rt.3.0.D152, C201, jesse, Sat Jul 12 02:41:34 2003, Bumping version to 3.0.4 - From: Jesse Vincent - Date: Fri Jul 11 23:35:03 2003 - - none - - rt.3.0.D151, C200, jesse, Sat Jul 12 01:34:41 2003, Debugging framework - cleanup - From: Jesse Vincent - Date: Fri Jul 11 22:31:37 2003 - - none - - rt.3.0.D150, C199, jesse, Sat Jul 12 01:17:57 2003, README updates to indicate - deprecated dependencies - From: Jesse Vincent - Date: Fri Jul 11 22:14:37 2003 - - none - - rt.3.0.D149, C198, leira, Sat Jul 12 01:17:08 2003, ShowAttachments had a - relative path which hurt extensions - From: Linda L. Julien - Date: Wed Jul 9 23:33:21 2003 - Warning: the original change was in the 'being_developed' state - - none - - rt.3.0.D148, C193, jesse, Sat Jul 5 17:34:46 2003, Bumping the version to - 3.0.4RC2 - From: Jesse Vincent - Date: Sat Jul 5 17:22:07 2003 - - none - - rt.3.0.D147, C192, jesse, Sat Jul 5 17:11:25 2003, Attachment display bug fix - from autrijus tang - From: Jesse Vincent - Date: Sat Jul 5 17:09:07 2003 - - none - - rt.3.0.D146, C13, jesse, Fri Jul 4 14:54:43 2003, Bumping to 3.0.4RC1 - From: Jesse Vincent - Date: Fri Jul 4 14:52:56 2003 - - none - - rt.3.0.D145, C191, jesse, Fri Jul 4 14:50:26 2003, Updated french translation - from Blaise Thauvin - From: Jesse Vincent - Date: Fri Jul 4 14:48:56 2003 - - none - - rt.3.0.D144, C190, jesse, Thu Jul 3 01:48:45 2003, Bumping the version to - 3.0.4pre1 - From: Jesse Vincent - Date: Thu Jul 3 01:47:25 2003 - - none - - rt.3.0.D143, C189, jesse, Thu Jul 3 01:44:51 2003, Relationship transactions - are recorded and displayed more robustly - From: Jesse Vincent - Date: Thu Jul 3 01:44:08 2003 - - none - - rt.3.0.D142, C188, jesse, Wed Jul 2 21:01:44 2003, Stylistic cleanups for - HasRight optimizations - From: Jesse Vincent - Date: Wed Jul 2 20:58:51 2003 - - none - - rt.3.0.D141, C187, jesse, Wed Jul 2 02:48:21 2003, Split the HasRight ACL - query into two parts. It's now two small and light SQL queries, instead of one - big one that overwhelmed databases - From: Jesse Vincent - Date: Wed Jul 2 02:45:49 2003 - - none - - rt.3.0.D140, C186, jesse, Wed Jul 2 02:19:47 2003, Fix for nested email - message parsing - From: Jesse Vincent - Date: Wed Jul 2 02:17:38 2003 - - none - - rt.3.0.D139, C183, jesse, Tue Jul 1 23:18:28 2003, #2873: Fix for - insufficently agressive loop culling - From: Jesse Vincent - Date: Mon Jun 30 21:12:50 2003 - - none - - rt.3.0.D138, C185, jesse, Tue Jul 1 19:08:47 2003, Fix for speedycgi - disappearing database connections - From: Jesse Vincent - Date: Tue Jul 1 19:05:19 2003 - - none - - rt.3.0.D137, C182, leira, Tue Jul 1 16:10:33 2003, Download link in - ShowTransaction - From: Linda L. Julien - Date: Mon Jun 30 18:04:52 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D136, C181, jesse, Mon Jun 30 15:25:46 2003, Refactored - Users::WhoHaveRight from Chris Audley at Blackrock - From: Jesse Vincent - Date: Mon Jun 30 15:23:18 2003 - - none - - rt.3.0.D135, C175, jesse, Mon Jun 30 15:24:56 2003, Updating rt-setup-database - to take acl and schema file names on the commandline - From: Jesse Vincent - Date: Mon Jun 30 13:41:12 2003 - - none - - rt.3.0.D134, C180, leira, Mon Jun 30 02:19:05 2003, use RTIR callbacks - From: Linda Julien - Date: Mon Jun 30 02:11:25 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D133, C173, leira, Mon Jun 30 02:17:05 2003, ShowMessageHeaders; make - headers clicky - From: Linda Julien - Date: Sun Jun 29 23:31:39 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D132, C179, jesse, Sun Jun 29 03:06:36 2003, #2847: allow URI Resolver - to render itself - From: Jesse Vincent - Date: Sun Jun 29 03:04:30 2003 - - none - - rt.3.0.D131, C178, jesse, Sun Jun 29 02:59:13 2003, #2843 Date relations were - too strict in RT::Tickets searches - From: Jesse Vincent - Date: Sun Jun 29 02:57:53 2003 - - none - - rt.3.0.D130, C177, jesse, Sat Jun 28 18:17:28 2003, UTF8, Custom Field and - text message rendering fixes from ourinternet - From: Jesse Vincent - Date: Sat Jun 28 18:15:09 2003 - - none - - rt.3.0.D129, C176, jesse, Sat Jun 28 17:23:01 2003, Applying POD patches from - ourinternet (clone of 3.0.C173) - From: Jesse Vincent - Date: Sat Jun 28 17:15:38 2003 - - none - - rt.3.0.D128, C172, jesse, Sat Jun 28 17:17:53 2003, Fixing postgres sortorder - bug unmased by searchbuilder fix - From: Jesse Vincent - Date: Fri Jun 27 01:12:13 2003 - - none - - rt.3.0.D127, C171, jesse, Tue Jun 24 16:42:07 2003, Ticket Update.html fix to - not doubly load content - From: Jesse Vincent - Date: Tue Jun 24 16:28:49 2003 - - none - - rt.3.0.D126, C170, jesse, Tue Jun 24 16:23:49 2003, I18N mail testing was was - being cavalier with the state of acls after its testing. (clone of 3.0.C167) - From: Jesse Vincent - Date: Tue Jun 24 16:22:16 2003 - - none - - rt.3.0.D125, C169, jesse, Tue Jun 24 16:23:37 2003, CustomField rights - checking was overly restrictive for users without queue-specific rights - From: Jesse Vincent - Date: Tue Jun 24 16:18:05 2003 - - none - - rt.3.0.D124, C168, jesse, Sat Jun 21 13:01:18 2003, Scrip data updates weren't - propagating to parent Ticket objects; Bumping to 3.0.3 - From: Jesse Vincent - Date: Sat Jun 21 12:55:04 2003 - - none - - rt.3.0.D123, C167, jesse, Thu Jun 19 22:23:01 2003, #2850 - With some - configurations, users could not create new tickets with 'new' requestors - - Bumped to 3.0 RC 4 - From: Jesse Vincent - Date: Thu Jun 19 22:22:20 2003 - - none - - rt.3.0.D122, C166, jesse, Thu Jun 19 14:25:03 2003, Bumping version to 3.0rc3 - From: Jesse Vincent - Date: Thu Jun 19 14:18:19 2003 - - none - - rt.3.0.D121, C165, jesse, Thu Jun 19 12:25:20 2003, Better handling of - malformed email messages - From: Jesse Vincent - Date: Thu Jun 19 12:21:56 2003 - - none - - rt.3.0.D120, C163, jesse, Thu Jun 19 03:17:20 2003, Anonymizing addresses in - mitya's submitted testcases - From: Jesse Vincent - Date: Thu Jun 19 03:16:47 2003 - - none - - rt.3.0.D119, C162, jesse, Thu Jun 19 03:03:16 2003, Bumping to 3.0.3rc2 - From: Jesse Vincent - Date: Thu Jun 19 03:01:10 2003 - - none - - rt.3.0.D118, C161, jesse, Thu Jun 19 02:58:24 2003, Mitya's failing processing - of html email - From: Jesse Vincent - Date: Thu Jun 19 02:56:48 2003 - - none - - rt.3.0.D117, C160, jesse, Wed Jun 18 17:58:34 2003, Another shot at the header - encoding fix - From: Jesse Vincent - Date: Wed Jun 18 17:58:01 2003 - - none - - rt.3.0.D116, C159, jesse, Wed Jun 18 01:27:03 2003, Bumping version to RC-1 - From: Jesse Vincent - Date: Wed Jun 18 01:25:13 2003 - - none - - rt.3.0.D115, C158, jesse, Wed Jun 18 01:01:22 2003, More I18N fixes from - ourinternet - From: Jesse Vincent - Date: Wed Jun 18 01:00:11 2003 - - none - - rt.3.0.D114, C157, jesse, Tue Jun 17 22:24:03 2003, Bumping to 3.0.3pre5 - From: Jesse Vincent - Date: Tue Jun 17 22:20:51 2003 - - none - - rt.3.0.D113, C156, jesse, Tue Jun 17 22:14:35 2003, better handle notification - messages containing only text/html content. - From: Jesse Vincent - Date: Tue Jun 17 21:55:06 2003 - - none - - rt.3.0.D112, C155, jesse, Tue Jun 17 21:55:16 2003, Better encoding and error - checking for message headers - From: Jesse Vincent - Date: Tue Jun 17 21:26:27 2003 - Warning: the original change was in the 'being_developed' state - - none - - rt.3.0.D111, C153, leira, Tue Jun 17 17:47:18 2003, SystemInternal group ACLs - in setup - From: Linda L. Julien - Date: Tue Jun 17 18:19:58 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D110, C152, leira, Tue Jun 17 16:46:34 2003, ShowRequestor takes path - From: Linda L. Julien - Date: Tue Jun 17 12:53:35 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D109, C151, jesse, Mon Jun 16 23:48:53 2003, #2797 Clean up automatich - chmodding on installation - From: Jesse Vincent - Date: Mon Jun 16 23:48:19 2003 - - none - - rt.3.0.D108, C150, jesse, Mon Jun 16 23:36:29 2003, #2799: Display URIs - instead of HREFs in ticket display - From: Jesse Vincent - Date: Mon Jun 16 23:35:00 2003 - - none - - rt.3.0.D107, C139, jesse, Mon Jun 16 23:16:45 2003, #2816 new callback to - ShowLinks - From: Jesse Vincent - Date: Mon Jun 16 23:14:05 2003 - - none - - rt.3.0.D106, C138, jesse, Mon Jun 16 23:16:29 2003, Importing minor bugfixes - from ourinternet - From: Jesse Vincent - Date: Mon Jun 16 23:06:00 2003 - - none - - rt.3.0.D105, C137, jesse, Mon Jun 16 19:41:13 2003, #2813 Duplicate tickets - created at the same time could cause a user creation race condition - From: Jesse Vincent - Date: Mon Jun 16 19:39:57 2003 - - none - - rt.3.0.D104, C136, jesse, Fri Jun 13 18:27:11 2003, Bumping version to RT - 3.0.3pre4 - From: Jesse Vincent - Date: Fri Jun 13 18:25:57 2003 - - none - - rt.3.0.D103, C135, jesse, Fri Jun 13 18:22:33 2003, Efficiency tweaks for - WhoHaveRight - From: Jesse Vincent - Date: Fri Jun 13 18:19:02 2003 - - none - - rt.3.0.D102, C133, jesse, Fri Jun 13 18:18:32 2003, On postgres, RT didn't - previously cope well with multipart messages including non-plain parts - containing non-ascii - From: Jesse Vincent - Date: Fri Jun 13 18:17:37 2003 - - none - - rt.3.0.D101, C132, jesse, Fri Jun 13 01:41:24 2003, #2776 - 'new' ACL cache - had bad behaviour. rolled back to older cache and added tests - From: Jesse Vincent - Date: Fri Jun 13 01:40:26 2003 - - none - - rt.3.0.D100, C131, jesse, Thu Jun 12 13:22:10 2003, Fixing search navigation - links (they were made to disappear) - From: Jesse Vincent - Date: Thu Jun 12 13:19:37 2003 - - none - - rt.3.0.D099, C130, jesse, Wed Jun 11 16:44:16 2003, Attempting to be smarter - about guessing encodings for outgoing mail - From: Jesse Vincent - Date: Wed Jun 11 16:42:50 2003 - Warning: the original change was in the 'being_developed' state - - none - - rt.3.0.D098, C127, jesse, Wed Jun 11 16:39:39 2003, Fixes the cascading style - sheet to properly reference message bodies - From: Jesse Vincent - Date: Wed Jun 11 15:43:39 2003 - Warning: the original change was in the 'being_developed' state - - rt.3.0.D097, C128, jesse, Wed Jun 11 16:37:38 2003, #2605 - SpamAssassin - Filter returns the wrong codes on success/failure - From: Jesse Vincent - Date: Wed Jun 11 15:53:58 2003 - - none - - rt.3.0.D096, C129, jesse, Wed Jun 11 16:36:53 2003, Various fixes from a pull- - up of the ourinternet branch - From: Jesse Vincent - Date: Wed Jun 11 16:17:44 2003 - - none - - rt.3.0.D095, C126, jesse, Tue Jun 10 16:17:50 2003, Really bumping the version - to 3.0.3pre3 - From: Jesse Vincent - Date: Tue Jun 10 16:17:08 2003 - - none - - rt.3.0.D094, C122, jesse, Tue Jun 10 15:58:32 2003, Bumping version to - 3.0.3pre3, bumping searchbuilder dependency - From: Jesse Vincent - Date: Tue Jun 10 15:56:41 2003 - - none - - rt.3.0.D093, C125, jesse, Tue Jun 10 15:54:52 2003, add TakeTicket, - StealTicket rights - From: Jesse Vincent - Date: Tue Jun 10 15:41:43 2003 - Warning: the original change was in the 'being_developed' state - - From: Jesse - Date: Tue Jun 10 11:01:04 2003 - Warning: the original change was in the 'being_reviewed' state - - From: Linda L. Julien - Date: Tue Jun 10 11:58:03 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D092, C123, leira, Tue Jun 10 15:54:10 2003, support group & queue acl - setting from rt-setup-database - From: Linda L. Julien - Date: Tue Jun 10 14:13:46 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D091, C121, jesse, Sun Jun 8 00:41:47 2003, Fixes for: Bogus message - headers containing high-bit characters; database handle reconnections; - postgres test suite failures - From: Jesse Vincent - Date: Sun Jun 8 00:32:40 2003 - - none - - rt.3.0.D090, C120, leira, Sun Jun 8 00:34:40 2003, Header & Logout take URL - From: Linda L. Julien - Date: Fri Jun 6 19:06:41 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D089, C119, jesse, Fri Jun 6 17:33:37 2003, #2721 - 'id' attribute had - mixed casing. this bothers certain databases (Sybase) - From: Jesse Vincent - Date: Fri Jun 6 17:32:16 2003 - - none - - rt.3.0.D088, C118, jesse, Wed Jun 4 17:21:24 2003, Bump to 3.0.3pre2; fix a - misspelled right in Queue.pm (#2686) - From: Jesse Vincent - Date: Wed Jun 4 17:19:39 2003 - Warning: the original change was in the 'being_developed' state - - The "rt" program, branch 3.0. - - rt.3.0.D087, C116, jesse, Wed Jun 4 17:17:08 2003, Better testing for - internationalization of outoging messages; slight refactoring to SendEmail to - be more testable; added missing deps to EmailParser - From: Jesse Vincent - Date: Wed Jun 4 16:53:07 2003 - - none - - rt.3.0.D086, C117, leira, Wed Jun 4 00:23:20 2003, pass title to Header - From: Linda L. Julien - Date: Tue Jun 3 18:09:39 2003 - Warning: the original change was in the 'being_developed' state - - none - - rt.3.0.D085, C115, jesse, Tue Jun 3 00:45:12 2003, The "rt" program, branch - 3.0. - From: Jesse Vincent - Date: Tue Jun 3 00:43:15 2003 - Warning: the original change was in the 'being_developed' state - - The "rt" program, branch 3.0. - - rt.3.0.D084, C113, jesse, Tue Jun 3 00:20:07 2003, Bumping - DBIx::SearchBuilder requirement to 0.84 - From: Jesse Vincent - Date: Tue Jun 3 00:19:50 2003 - - none - - rt.3.0.D083, C112, jesse, Tue Jun 3 00:18:43 2003, #2678 Fixing crit messages - in RT::User - From: Jesse Vincent - Date: Tue Jun 3 00:18:12 2003 - - none - - rt.3.0.D082, C111, jesse, Tue Jun 3 00:04:45 2003, Fixing an acl bug in - Principal_Overlay introduced after 3.0.2 and a possible 'Deep' transaction - issue. now requires DBIx::SearchBuilder 0.83_05 or newer - From: Jesse Vincent - Date: Tue Jun 3 00:02:23 2003 - - none - - rt.3.0.D081, C110, jesse, Mon Jun 2 22:40:34 2003, ACL cache made postgres - safe - From: Jesse Vincent - Date: Mon Jun 2 22:39:03 2003 - - none - - rt.3.0.D080, C109, leira, Mon Jun 2 17:10:05 2003, CF defaults; fix Starts - set - From: Linda L. Julien - Date: Mon Jun 2 17:32:11 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D079, C108, jesse, Sat May 31 00:28:37 2003, Log path enhancment to - deal more gracefully with absolutely specified logfile paths - From: Jesse Vincent - Date: Sat May 31 00:27:38 2003 - - none - - rt.3.0.D078, C107, jesse, Sat May 31 00:20:53 2003, Continued performance - improvements for caching - From: Jesse Vincent - Date: Sat May 31 00:19:32 2003 - - none - - rt.3.0.D077, C106, jesse, Sat May 31 00:20:32 2003, fix for FastCGI and - SpeedyCGI setgidness with weird environments - From: Jesse Vincent - Date: Sat May 31 00:19:15 2003 - - none - - rt.3.0.D076, C105, jesse, Fri May 30 16:21:14 2003, #2658 Cosmetic issue with - Scrip menu listing - From: Jesse Vincent - Date: Fri May 30 16:14:02 2003 - - none - - rt.3.0.D075, C103, jesse, Fri May 30 16:20:57 2003, #2652 - de.po updates - From: Jesse Vincent - Date: Fri May 30 15:57:44 2003 - - none - - rt.3.0.D074, C102, jesse, Fri May 30 16:18:57 2003, #2657 Web UI Scrip - creation bug - From: Jesse Vincent - Date: Fri May 30 15:50:16 2003 - - none - - rt.3.0.D073, C101, jesse, Fri May 30 16:17:43 2003, #2662 Fixing an overly - restrictive ACL check on group creation - From: Jesse Vincent - Date: Fri May 30 15:46:22 2003 - - none - - rt.3.0.D072, C100, leira, Fri May 30 16:17:05 2003, update layout fix - From: Linda L. Julien - Date: Thu May 29 14:30:01 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D071, C99, jesse, Wed May 28 17:54:48 2003, Bumping the version to - 3.0.3pre1 - From: Jesse Vincent - Date: Wed May 28 17:52:51 2003 - - none - - rt.3.0.D070, C98, jesse, Wed May 28 17:54:40 2003, Further UTF8-fixed from - autrijus - From: Jesse Vincent - Date: Wed May 28 17:49:32 2003 - - none - - rt.3.0.D069, C97, jesse, Wed May 28 17:07:10 2003, A fix to Tickets_Overlay.pm - to make the 'Count' methods actually do a count, not a full SELECT - From: Jesse Vincent - Date: Wed May 28 17:04:50 2003 - - none - - rt.3.0.D068, C96, jesse, Wed May 28 17:06:43 2003, ACL HasRight system - replaced with an algorithm that does more looking ahead - From: Jesse Vincent - Date: Wed May 28 16:36:10 2003 - - none - - rt.3.0.D067, C95, jesse, Tue May 27 13:22:19 2003, Merge from ourinternet: - UTF8 fixes; more configurable apache sessions; - From: Jesse Vincent - Date: Tue May 27 13:07:41 2003 - - none - - rt.3.0.D066, C93, jesse, Sat May 24 18:05:36 2003, Additional work on the - SQLite port - From: Jesse Vincent - Date: Sat May 24 18:04:50 2003 - - none - - rt.3.0.D065, C92, jesse, Fri May 23 16:45:23 2003, MIME::Words encoding fixes - for mail sending - From: Jesse Vincent - Date: Fri May 23 16:44:28 2003 - - none - - rt.3.0.D064, C91, jesse, Fri May 23 16:12:26 2003, Fixing an upgrade bug from - 3.0.2->3.0.3 - From: Jesse Vincent - Date: Fri May 23 15:57:50 2003 - - none - - rt.3.0.D063, C90, jesse, Fri May 23 15:27:47 2003, Merging utf8 fixes from - autrijus tang - From: Jesse Vincent - Date: Fri May 23 15:25:23 2003 - - none - - rt.3.0.D062, C89, jesse, Wed May 21 00:58:34 2003, #2603: /opt/rt3/share/doc - should not be a file. - From: Jesse Vincent - Date: Wed May 21 00:29:55 2003 - - none - - rt.3.0.D061, C88, jesse, Wed May 21 00:57:45 2003, Fix to honor '$LogDir' for - LogToFile - From: Jesse Vincent - Date: Wed May 21 00:17:18 2003 - - none - - rt.3.0.D060, C14, jesse, Wed May 21 00:56:31 2003, #2539: Re: [rt-users] - unexpected usage: change sort order with column headers in search window - From: Jesse Vincent - Date: Tue May 20 23:19:46 2003 - - none - - rt.3.0.D059, C87, jesse, Wed May 21 00:55:08 2003, Including norwegian bokmal - translation - From: Jesse Vincent - Date: Tue May 20 23:05:17 2003 - - none - - rt.3.0.D058, C86, jesse, Wed May 21 00:54:06 2003, Fix for #2602 - make test - fails on _Config.pm - From: Jesse Vincent - Date: Tue May 20 22:32:52 2003 - - none - - rt.3.0.D057, C85, leira, Tue May 20 12:15:11 2003, Robert's updated search - stuff - From: Linda L. Julien - Date: Mon May 19 18:19:14 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D056, C83, jesse, Sat May 17 17:34:32 2003, merge from ourinternet; one - CreateTickets fix and some utf8 updates - From: Jesse Vincent - Date: Sat May 17 17:31:43 2003 - - none - - rt.3.0.D055, C82, jesse, Mon May 12 20:30:45 2003, Bumping the version to RT - 3.0.2 - From: Jesse Vincent - Date: Tue May 13 02:29:44 2003 - - none - - rt.3.0.D054, C81, jesse, Wed May 7 09:18:28 2003, Bumping the version to - 3.0.2pre6 - From: Jesse Vincent - Date: Wed May 7 15:16:55 2003 - Warning: the original change was in the 'being_developed' state - - none - - rt.3.0.D053, C80, jesse, Wed May 7 09:02:24 2003, Importing utf8 fixes, _ - Vendor overlay support from ourinternet - From: Jesse Vincent - Date: Wed May 7 14:52:58 2003 - - none - - rt.3.0.D052, C79, jesse, Wed May 7 07:05:14 2003, Cleaning up RT tag - processing - From: Jesse Vincent - Date: Wed May 7 13:04:17 2003 - - none - - rt.3.0.D051, C78, jesse, Wed May 7 07:03:27 2003, More performance work on - WhoHaveRight; removing an extra join - From: Jesse Vincent - Date: Wed May 7 13:00:43 2003 - - none - - rt.3.0.D050, C77, jesse, Fri May 2 11:23:23 2003, Fixing bogus anchor tags - From: Jesse Vincent - Date: Fri May 2 17:19:54 2003 - - none - - rt.3.0.D049, C76, jesse, Fri May 2 10:26:30 2003, [#2437] - CanonicalizeEmailAddress fixes; [# 2449] html fixes for right editing; [# - 2457] email addresses weren't always being canonicalized - From: Jesse Vincent - Date: Fri May 2 16:24:40 2003 - - none - - rt.3.0.D048, C75, jesse, Fri May 2 08:35:38 2003, bumped version to - 3.0.2pre5; attachments performance fixes; utf-8 mailgateway fixes; more - extension hooks; template updates for approvals - From: Jesse Vincent - Date: Fri May 2 14:32:57 2003 - - none - - rt.3.0.D047, C73, jesse, Sun Apr 27 19:06:46 2003, I18N patches from autrijus; - bouncing to 3.0.2pre4 - From: Jesse Vincent - Date: Mon Apr 28 01:02:18 2003 - - none - - rt.3.0.D046, C72, leira, Sun Apr 27 19:06:04 2003, bulk links - From: Linda L. Julien - Date: Thu Apr 24 01:23:01 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D045, C71, jesse, Sat Apr 19 03:42:39 2003, Another go at fixing the - ARRAY() issue; bumping to 3.0.2pre3 - From: Jesse Vincent - Date: Sat Apr 19 08:39:19 2003 - - none - - rt.3.0.D044, C70, jesse, Fri Apr 18 16:37:00 2003, fixing utf8 tainting issue - in autohandler; bumped to 3.0.2pre2 - From: Jesse Vincent - Date: Fri Apr 18 21:32:04 2003 - - none - - rt.3.0.D043, C69, leira, Thu Apr 17 18:51:41 2003, make ids clicky - From: Linda L. Julien - Date: Thu Apr 17 18:31:40 2003 - Warning: the original change was in the 'awaiting_integration' state - - none - - rt.3.0.D042, C68, jesse, Thu Apr 17 18:39:54 2003, Bumping to 3.0.2pre1 - From: Jesse Vincent - Date: Thu Apr 17 23:37:59 2003 - - none - - rt.3.0.D041, C67, jesse, Thu Apr 17 18:33:15 2003, updating autrijus' - autohandler patch. seems to break lots of stuff - From: Jesse Vincent - Date: Thu Apr 17 23:21:02 2003 - - none - - rt.3.0.D040, C66, jesse, Thu Apr 17 18:32:24 2003, Quicksearch bug fix from - Stan - From: Jesse Vincent - Date: Thu Apr 17 23:16:58 2003 - - none - - rt.3.0.D039, C65, jesse, Thu Apr 17 18:29:31 2003, Fixing an untainting bug in - 3.0.1 - From: Jesse Vincent - Date: Thu Apr 17 23:15:01 2003 - Warning: the original change was in the 'being_developed' state - - none - - rt.3.0.D038, C63, jesse, Thu Apr 17 04:46:42 2003, Fixing a showmessagestanza - bug found in RTIR - From: Jesse Vincent - Date: Thu Apr 17 09:45:48 2003 - - none - - rt.3.0.D037, C62, jesse, Tue Apr 15 11:53:58 2003, Bumping to version 3.0.1 - From: Jesse Vincent - Date: Tue Apr 15 11:52:00 2003 - - none - - rt.3.0.D036, C61, jesse, Mon Apr 14 18:18:03 2003, New speedycgi support from - vivek khera - From: Jesse Vincent - Date: Mon Apr 14 14:49:49 2003 - - none - - rt.3.0.D035, C60, jesse, Sun Apr 13 21:43:32 2003, SMTP and I18N fixes from - autrijus tang. Updated chinese translations - From: Jesse Vincent - Date: Sun Apr 13 21:32:55 2003 - - none - - rt.3.0.D034, C59, jesse, Fri Apr 11 21:58:36 2003, Bumping to RT 3.0.1pre2 - From: Jesse Vincent - Date: Fri Apr 11 21:58:06 2003 - - none - - rt.3.0.D033, C58, jesse, Fri Apr 11 21:56:11 2003, Better binary attachment - handling fix from autrijus - From: Jesse Vincent - Date: Fri Apr 11 21:52:12 2003 - - none - - rt.3.0.D032, C57, jesse, Fri Apr 11 21:35:17 2003, Testing and fixing binary - attachment corruption - From: Jesse Vincent - Date: Fri Apr 11 21:34:28 2003 - - none - - rt.3.0.D031, C56, jesse, Fri Apr 11 21:34:56 2003, Testing fixes for mail - authentication/authorization - From: Jesse Vincent - Date: Thu Apr 10 00:08:29 2003 - - none - - rt.3.0.D030, C55, jesse, Wed Apr 9 13:55:18 2003, #2365 Removing outdated - Mason setup parameter - From: Jesse Vincent - Date: Wed Apr 9 13:54:43 2003 - - none - - rt.3.0.D029, C53, jesse, Wed Apr 9 13:22:35 2003, Added preliminary left to - right hebrew translation - From: Jesse Vincent - Date: Wed Apr 9 13:18:16 2003 - - none - - rt.3.0.D028, C52, jesse, Fri Apr 4 02:10:01 2003, More I18N testing for - rafael - From: Jesse Vincent - Date: Fri Apr 4 02:08:49 2003 - - none - - rt.3.0.D027, C51, jesse, Thu Apr 3 19:33:34 2003, Changing address used in - example to not send mail to author - From: Jesse Vincent - Date: Thu Apr 3 19:29:02 2003 - Warning: the original change was in the 'being_integrated' state - - none - - rt.3.0.D026, C50, jesse, Thu Apr 3 19:16:37 2003, Integrating rafael's - failing test suite and proposed fix from autrijus - From: Jesse Vincent - Date: Thu Apr 3 19:15:03 2003 - - none - - rt.3.0.D025, C39, jesse, Thu Apr 3 19:16:15 2003, Many users should be able - to have a blank address; neew test suite to ensure this - From: Jesse Vincent - Date: Thu Apr 3 13:27:36 2003 - - none - - rt.3.0.D024, C38, jesse, Thu Apr 3 13:30:37 2003, Updates for RT RPC - interface from AMS - From: Jesse Vincent - Date: Wed Apr 2 15:32:15 2003 - - none - - rt.3.0.D023, C36, jesse, Wed Apr 2 14:14:07 2003, Updated Spanish translation - From: Jesse Vincent - Date: Tue Apr 1 14:02:36 2003 - - none - - rt.3.0.D022, C37, jesse, Wed Apr 2 14:13:55 2003, Updated dependencies - From: Jesse Vincent - Date: Wed Apr 2 14:09:41 2003 - - none - - rt.3.0.D021, C35, jesse, Tue Apr 1 13:00:22 2003, New czech translation - From: Jesse Vincent - Date: Tue Apr 1 12:58:57 2003 - - none - - rt.3.0.D020, C33, jesse, Fri Mar 28 14:48:20 2003, A tiny bit of extra data - passing for some callbacks - From: Jesse Vincent - Date: Fri Mar 28 14:43:28 2003 - - none - - rt.3.0.D019, C32, jesse, Fri Mar 28 14:35:10 2003, Added better error checking - for failed ticket creation - From: Jesse Vincent - Date: Fri Mar 28 14:32:52 2003 - - none - - rt.3.0.D018, C31, jesse, Sun Mar 23 17:21:45 2003, Minor fixes - Bumped to - 3.0.0; - 2266 - postgres scrip creation bug - 2267 - Tickets not reopened after being stalled - 2265 - Fixed css nits from blaise - Unreported - Fixed quick-search bug - From: Jesse Vincent - Date: Sun Mar 23 17:17:55 2003 - - none - - rt.3.0.D017, C30, jesse, Thu Mar 20 21:38:30 2003, Bumping to 3.0.0rc4 - From: Jesse Vincent - Date: Thu Mar 20 21:28:01 2003 - - none - - rt.3.0.D016, C29, jesse, Thu Mar 20 21:18:27 2003, RT should now be less - overzealous about opening and then marking a ticket 'new' again - From: Jesse Vincent - Date: Thu Mar 20 21:14:47 2003 - - none - - rt.3.0.D015, C28, jesse, Thu Mar 20 15:21:49 2003, Further postgres tweaks and - fixes - From: Jesse Vincent - Date: Thu Mar 20 15:20:21 2003 - - none - - rt.3.0.D014, C27, jesse, Thu Mar 20 01:48:42 2003, Postgres schema tweak - From: Jesse Vincent - Date: Thu Mar 20 01:47:20 2003 - - none - - rt.3.0.D013, C26, jesse, Wed Mar 19 21:26:47 2003, Postgres fixes - From: Jesse Vincent - Date: Wed Mar 19 21:26:24 2003 - - none - - rt.3.0.D012, C25, jesse, Wed Mar 19 16:27:29 2003, Brazilian Portuguese - translation - From: Jesse Vincent - Date: Wed Mar 19 16:25:48 2003 - - none - - rt.3.0.D011, C23, jesse, Wed Mar 19 13:03:15 2003, New french translation - From: Jesse Vincent - Date: Wed Mar 19 13:02:47 2003 - - none - - rt.3.0.D010, C22, jesse, Wed Mar 19 01:01:24 2003, Bumping to RC3; fixing the - display of 'This user's n highest priority tix' - From: Jesse Vincent - Date: Wed Mar 19 01:00:33 2003 - - none - - rt.3.0.D009, C20, jesse, Wed Mar 19 00:46:17 2003, finishing the notify stuff - From: Jesse Vincent - Date: Wed Mar 19 00:45:09 2003 - - none - - rt.3.0.D008, C19, jesse, Wed Mar 19 00:40:45 2003, Caving in to the masses and - making 'notify sender' configurable - From: Jesse Vincent - Date: Wed Mar 19 00:38:50 2003 - - none - - rt.3.0.D007, C18, jesse, Tue Mar 18 16:29:45 2003, More performance work; - backing out 'enhancements' that killed system performance - From: Jesse Vincent - Date: Tue Mar 18 16:26:07 2003 - - none - - rt.3.0.D006, C17, jesse, Tue Mar 18 11:29:28 2003, fixing fastcgi's ability to - load webmux.pl on some platforms - From: Jesse Vincent - Date: Tue Mar 18 11:28:11 2003 - - none - - rt.3.0.D005, C12, jesse, Tue Mar 18 00:58:52 2003, fixing indices for postgres - From: Jesse Vincent - Date: Tue Mar 18 00:53:06 2003 - - none - - rt.3.0.D004, C16, jesse, Tue Mar 18 00:41:26 2003, Performance work on - 'WhoHaveRight'; bumping to 3.0.0rc2 - From: Jesse Vincent - Date: Tue Mar 18 00:37:30 2003 - - none - - rt.3.0.D003, C15, jesse, Fri Mar 14 17:07:28 2003, removing the old REST API - From: Jesse Vincent - Date: Fri Mar 14 16:50:38 2003 - - none - - rt.3.0.D002, C11, jesse, Fri Mar 14 16:42:46 2003, Minor CSS update. rollback - fix; new database indices; copyright update - From: Jesse Vincent - Date: Fri Mar 14 16:35:01 2003 - - none - - rt.3.0.D001, C10, jesse, Fri Mar 14 01:26:22 2003, Bumping the version to - rt.3.0.0rc0 - From: Jesse Vincent - Date: Fri Mar 14 01:25:51 2003 - - none diff --git a/rt/FREESIDE_MODIFIED b/rt/FREESIDE_MODIFIED deleted file mode 100644 index cab7db3cf..000000000 --- a/rt/FREESIDE_MODIFIED +++ /dev/null @@ -1,3 +0,0 @@ -sbin/rt-setup-database -config.layout -config.layout.in diff --git a/rt/HOWTO/README b/rt/HOWTO/README deleted file mode 100644 index 942096b0a..000000000 --- a/rt/HOWTO/README +++ /dev/null @@ -1,14 +0,0 @@ -Here you'll find plain text documentation of how to handle various -project procedures. Files contained herein: - -change.txt - How changes are integrated, including generating and - distributing aedist change sets, and updating the CVS repository. - -release.txt - Steps to go through when releasing a new version of RT. - - -These procedures are based on documentation from the scons project -as http://www.scons.org/ - diff --git a/rt/HOWTO/change.txt b/rt/HOWTO/change.txt deleted file mode 100644 index de316450c..000000000 --- a/rt/HOWTO/change.txt +++ /dev/null @@ -1,67 +0,0 @@ -Handling a change set: - - -- Start the change: - - aedist -r [if it's a remote submission] - - -or- - - aedb {cnum} [if it's initiated locally] - - -- Normal development cycle: - - aecd -c {cnum} - aecp . # Copy the baseline to your working dir - # work on your change - aenf {new file names} - - aecpu -unch # Remove unchanged files, for faster diffs - aeb # Currently does nothing - aet # Currently does nothing - aed # Diff your change - aede # End the change - - -- As the reviewer: - - aerpass {cnum} - - -- As the integrator: - - aeib {cnum} - aeb - aet - aed - cd ~ # Get out of the current working directory - aeipass - - - - - -- Update the aedist baseline on the web site: - - aedist -s -bl -p rt.2.1 > rt.2.1.ae - scp rt.2.1.ae jesse@fsck.com:/home/ftp/pub/rt/devel/rt.2.1.ae - rm rt.2.1.ae - - [This will eventually be automated.] - - -- Distribute the change to CVS: - - WARNING. DOES NOT YET WORK - - export CVS_RSH=ssh - ae2cvs -n -aegis -p rt.2.1 -c {cnum} -u ~/SCons/scons - ae2cvs -X -aegis -p rt.2.1 -c {cnum} -u ~/SCons/scons - - If you need the "ae2cvs" Perl script, you can find a copy - checked in to the bin/subdirectory. - - [This may eventually be automated.] - - - - -- Grabbing the latest dev sources over ssh - - ssh fsck.com "aedist -s -p rt.2.1 -naa -bl -entire-source" | aedist -r - - diff --git a/rt/HOWTO/release.txt b/rt/HOWTO/release.txt deleted file mode 100644 index 285041c5b..000000000 --- a/rt/HOWTO/release.txt +++ /dev/null @@ -1,124 +0,0 @@ -Things to do to release a new version of rt: - - Build and test candidate packages - - Read through the README and src/README.txt files for any updates - - Prepare ChangeLog - - date -R the latest release - - should be current if this has been updated as each - change went in. - - [ Should be automated ] - - - TODO: nothing below this line is accurate for RT - - END THE BRANCH - - ae_p rt.2 - aede {5} - aerpass {5} - aeib {5} - aeb - aet - aet -reg - aed - aeipass - - START THE NEW BRANCH - - aenbr -p rt.2 {6} - aenc -p rt.2.{6} - - Call it something like, "Initialize the new - branch." Cause = internal_enhancement. Exempt - it from all tests (*_exempt = true). - - ae_p rt.2.{6} - - aedb 100 - - aecd - - # Change the hard-coded package version numbers - # in the following files. - aecp rttruct debian/changelog rpm/rt.spec - - vi rttruct debian/changelog rpm/rt.spec - - # Optionally, do the same in the following: - [optional] aecp HOWTO/change.txt - [optional] aecp HOWTO/release.txt - [optional] aecp debian/rt.postinst - - [optional] vi HOWTO/change.txt - [optional] vi HOWTO/release.txt - [optional] vi debian/rt.postinst - - aeb - - aet -reg - - aed - - aede - - etc. - - - Read through the FAQ for any updates - - Test downloading from the web site download page - - - In the Bugs Tracker, add a Group for the new release (0.05) - - Announce to the following mailing lists (template below): - - rt-announce@lists.fsck.com - - - Notify www.cmtoday.com/contribute.html - - [This guy wants an announcement no more frequently than - once a month, so save it for a future release if it's - been too soon since the previous one.] - - Notify freshmeat.net - - [Wait until the morning so the announcement hits the - main freshmeat.net page while people in the U.S. are - awake and working] - - - - -======================= - -Template release announcement: - - - -Version 2.1.XXX of rt has been released and is available for download -from the rt web site: - - http://bestpractical.com/rt/ - - - -WHAT'S NEW IN THIS RELEASE? - -Version 2.1.XXX of rt contains the following important changes: - - - XXX - -For a complete list of changes in version 2.1.XXX, see the CHANGES.txt -file in the release itself. - - -WHAT IS RT? - - FILL THIS IN diff --git a/rt/HOWTO/version-control.txt b/rt/HOWTO/version-control.txt deleted file mode 100644 index 06babfdf1..000000000 --- a/rt/HOWTO/version-control.txt +++ /dev/null @@ -1,41 +0,0 @@ -Using Aegis for RT development - - 1. The main line of RT development will be under the control - of the Aegis change management system, as administered by - Best Practical Solutions, LLC - - 2. We will use aedist to generate change sets for each change - checked in to the main Aegis repository. These change sets will be - either distributed by a mailing list or made available via the web, - or both. - - 3. Remote developers using Aegis will send aedist output for - their changes to rt-patches@bestpractical.com for review and - integration. - - 4. The aedist output should be sent to rt-patches@bestpractical.com - after the change has completed its local aede, but before aerpass. - - 5. If the change is rejected, the developer can aedeu to reopen - the change and fix whatever problems caused the review to not pass. - - 6. A baseline snapshot (aedist -bl) of the main Aegis repository - will be generated at least daily and made available via http - to provide a central location for synchronizing remote Aegis - repositories. - - 7. Changes to the main Aegis repository will also be propagated - automatically to the tracking CVS repository. - -Using CVS for RT development - - 1. CVS is accessed via anonymous cvs with the following CVSROOT: - - :pserver:anoncvs@cvs.fsck.com:/raid/cvsroot/rt-2-1 - - 2. Remote developers using CVS will send patches (cvs -diff - output) to rt-patches@bestpractical.com for integration into the - main Aegis repository. This allows anonymous CVS access to be used - for RT development by developers who are unable to use Aegis. - - diff --git a/rt/Makefile b/rt/Makefile deleted file mode 100644 index 644722109..000000000 --- a/rt/Makefile +++ /dev/null @@ -1,485 +0,0 @@ -# BEGIN LICENSE BLOCK -# -# Copyright (c) 1996-2002 Jesse Vincent -# -# (Except where explictly superceded by other copyright notices) -# -# This work is made available to you under the terms of Version 2 of -# the GNU General Public License. A copy of that license should have -# been provided with this software, but in any event can be snarfed -# from www.gnu.org -# -# This work 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. -# -# -# Unless otherwise specified, all modifications, corrections or -# extensions to this work which alter its source code become the -# property of Best Practical Solutions, LLC when submitted for -# inclusion in the work. -# -# -# END LICENSE BLOCK - - -# -# DO NOT HAND-EDIT the file named 'Makefile'. This file is autogenerated. -# Have a look at "configure" and "Makefile.in" instead -# - - -PERL = /usr/bin/perl - -CONFIG_FILE_PATH = /opt/rt3/etc -CONFIG_FILE = $(CONFIG_FILE_PATH)/RT_Config.pm -SITE_CONFIG_FILE = $(CONFIG_FILE_PATH)/RT_SiteConfig.pm - - -RT_VERSION_MAJOR = 3 -RT_VERSION_MINOR = 0 -RT_VERSION_PATCH = 4 - -RT_VERSION = $(RT_VERSION_MAJOR).$(RT_VERSION_MINOR).$(RT_VERSION_PATCH) -TAG = rt-$(RT_VERSION_MAJOR)-$(RT_VERSION_MINOR)-$(RT_VERSION_PATCH) - - -# This is the group that all of the installed files will be chgrp'ed to. -RTGROUP = rt - - -# User which should own rt binaries. -BIN_OWNER = root - -# User that should own all of RT's libraries, generally root. -LIBS_OWNER = root - -# Group that should own all of RT's libraries, generally root. -LIBS_GROUP = bin - -WEB_USER = www -WEB_GROUP = www - -# {{{ Files and directories - -# DESTDIR allows you to specify that RT be installed somewhere other than -# where it will eventually reside - -DESTDIR = - - -RT_PATH = /opt/rt3 -RT_ETC_PATH = /opt/rt3/etc -RT_BIN_PATH = /opt/rt3/bin -RT_SBIN_PATH = /opt/rt3/sbin -RT_LIB_PATH = /opt/rt3/lib -RT_MAN_PATH = /opt/rt3/man -RT_VAR_PATH = /opt/rt3/var -RT_DOC_PATH = /opt/rt3/share/doc -RT_LOCAL_PATH = /opt/rt3/local -LOCAL_ETC_PATH = /opt/rt3/local/etc -LOCAL_LEXICON_PATH = /opt/rt3/local/po -MASON_HTML_PATH = /opt/rt3/share/html -MASON_LOCAL_HTML_PATH = /opt/rt3/local/html -MASON_DATA_PATH = /opt/rt3/var/mason_data -MASON_SESSION_PATH = /opt/rt3/var/session_data -RT_LOG_PATH = /opt/rt3/var/log - -# RT_READABLE_DIR_MODE is the mode of directories that are generally meant -# to be accessable -RT_READABLE_DIR_MODE = 0755 - - - - -# {{{ all these define the places that RT's binaries should get installed - -# RT_MODPERL_HANDLER is the mason handler script for mod_perl -RT_MODPERL_HANDLER = $(RT_BIN_PATH)/webmux.pl -# RT_FASTCGI_HANDLER is the mason handler script for FastCGI -RT_FASTCGI_HANDLER = $(RT_BIN_PATH)/mason_handler.fcgi -# RT_WIN32_FASTCGI_HANDLER is the mason handler script for FastCGI -RT_WIN32_FASTCGI_HANDLER = $(RT_BIN_PATH)/mason_handler.svc -# RT's admin CLI -RT_CLI_ADMIN_BIN = $(RT_BIN_PATH)/rtadmin -# RT's mail gateway -RT_MAILGATE_BIN = $(RT_BIN_PATH)/rt-mailgate -# RT's cron tool -RT_CRON_BIN = $(RT_BIN_PATH)/rt-crontool - -# }}} - -SETGID_BINARIES = $(DESTDIR)/$(RT_FASTCGI_HANDLER) \ - $(DESTDIR)/$(RT_WIN32_FASTCGI_HANDLER) - -BINARIES = $(DESTDIR)/$(RT_MODPERL_HANDLER) \ - $(DESTDIR)/$(RT_MAILGATE_BIN) \ - $(DESTDIR)/$(RT_CRON_BIN) \ - $(SETGID_BINARIES) -SYSTEM_BINARIES = $(DESTDIR)/$(RT_SBIN_PATH)/ - - -# }}} - -# {{{ Database setup - -# -# DB_TYPE defines what sort of database RT trys to talk to -# "mysql" is known to work. -# "Pg" is known to work - -DB_TYPE = mysql - -# Set DBA to the name of a unix account with the proper permissions and -# environment to run your commandline SQL sbin - -# Set DB_DBA to the name of a DB user with permission to create new databases - -# For mysql, you probably want 'root' -# For Pg, you probably want 'postgres' -# For oracle, you want 'system' - -DB_DBA = root - -DB_HOST = localhost - -# If you're not running your database server on its default port, -# specifiy the port the database server is running on below. -# It's generally safe to leave this blank - -DB_PORT = - - - - -# -# Set this to the canonical name of the interface RT will be talking to the -# database on. If you said that the RT_DB_HOST above was "localhost," this -# should be too. This value will be used to grant rt access to the database. -# If you want to access the RT database from multiple hosts, you'll need -# to grant those database rights by hand. -# - -DB_RT_HOST = localhost - -# set this to the name you want to give to the RT database in -# your database server. For Oracle, this should be the name of your sid - -DB_DATABASE = rt3 -DB_RT_USER = rt_user -DB_RT_PASS = rt_pass - -# }}} - - -#################################################################### - -all: default - -default: - @echo "Please read RT's readme before installing. Not doing so could" - @echo "be dangerous." - - - -instruct: - @echo "Congratulations. RT has been installed. " - @echo "" - @echo "" - @echo "You must now configure RT by editing $(SITE_CONFIG_FILE)." - @echo "" - @echo "(You will definitely need to set RT's database password before continuing." - @echo " Not doing so could be very dangerous)" - @echo "" - @echo "After that, you need to initialize RT's database by running" - @echo " 'make initialize-database'" - -# @echo " or by executing " -# @echo " '$(RT_SBIN_PATH)/rt-setup-database --action init \ " -# @echo " --dba $(DB_DBA) --prompt-for-dba-password'" - - - -upgrade-instruct: - @echo "Congratulations. RT has been upgraded. You should now check-over" - @echo "$(CONFIG_FILE) for any necessary site customization. Additionally," - @echo "you should update RT's system database objects by running " - @echo " ls etc/upgrade" - @echo "For each file in that directory whose name is greater than" - @echo "your previously installed RT version, run:" - @echo " $(RT_SBIN_PATH)/rt-setup-database --action insert --datafile etc/upgrade/" - - -upgrade: dirs upgrade-noclobber upgrade-instruct - -upgrade-noclobber: config-install libs-install html-install bin-install local-install doc-install fixperms - - -# {{{ dependencies -testdeps: - $(PERL) ./sbin/rt-test-dependencies --with-$(DB_TYPE) - -fixdeps: - $(PERL) ./sbin/rt-test-dependencies --install --with-$(DB_TYPE) - -#}}} - -# {{{ fixperms -fixperms: - # Make the libraries readable - chmod $(RT_READABLE_DIR_MODE) $(DESTDIR)/$(RT_PATH) - chown -R $(LIBS_OWNER) $(DESTDIR)/$(RT_LIB_PATH) - chgrp -R $(LIBS_GROUP) $(DESTDIR)/$(RT_LIB_PATH) - chmod -R u+rwX,go-w,go+rX $(DESTDIR)/$(RT_LIB_PATH) - - - chmod $(RT_READABLE_DIR_MODE) $(DESTDIR)/$(RT_BIN_PATH) - chmod $(RT_READABLE_DIR_MODE) $(DESTDIR)/$(RT_BIN_PATH) - - chmod 0755 $(DESTDIR)/$(RT_ETC_PATH) - chmod 0500 $(DESTDIR)/$(RT_ETC_PATH)/* - - #TODO: the config file should probably be able to have its - # owner set seperately from the binaries. - chown -R $(BIN_OWNER) $(DESTDIR)/$(RT_ETC_PATH) - chgrp -R $(RTGROUP) $(DESTDIR)/$(RT_ETC_PATH) - - chmod 0550 $(DESTDIR)/$(CONFIG_FILE) - chmod 0550 $(DESTDIR)/$(SITE_CONFIG_FILE) - - # Make the interfaces executable and setgid rt - chown $(BIN_OWNER) $(BINARIES) - chgrp $(RTGROUP) $(BINARIES) - chmod 0755 $(BINARIES) - chmod g+s $(SETGID_BINARIES) - - # Make the web ui readable by all. - chmod -R u+rwX,go-w,go+rX $(DESTDIR)/$(MASON_HTML_PATH) \ - $(DESTDIR)/$(MASON_LOCAL_HTML_PATH) \ - $(DESTDIR)/$(LOCAL_LEXICON_PATH) - chown -R $(LIBS_OWNER) $(DESTDIR)/$(MASON_HTML_PATH) \ - $(DESTDIR)/$(MASON_LOCAL_HTML_PATH) - chgrp -R $(LIBS_GROUP) $(DESTDIR)/$(MASON_HTML_PATH) \ - $(DESTDIR)/$(MASON_LOCAL_HTML_PATH) - - # Make the web ui's data dir writable - chmod 0770 $(DESTDIR)/$(MASON_DATA_PATH) \ - $(DESTDIR)/$(MASON_SESSION_PATH) - chown -R $(WEB_USER) $(DESTDIR)/$(MASON_DATA_PATH) \ - $(DESTDIR)/$(MASON_SESSION_PATH) - chgrp -R $(WEB_GROUP) $(DESTDIR)/$(MASON_DATA_PATH) \ - $(DESTDIR)/$(MASON_SESSION_PATH) -# }}} - -fixperms-nosetgid: fixperms - @echo "You should never be running RT this way. it's unsafe" - chmod 0555 $(SETGID_BINARIES) - chmod 0555 $(DESTDIR)/$(CONFIG_FILE) - chmod 0555 $(DESTDIR)/$(SITE_CONFIG_FILE) - -# {{{ dirs -dirs: - mkdir -p $(DESTDIR)/$(RT_LOG_PATH) - mkdir -p $(DESTDIR)/$(MASON_DATA_PATH) - mkdir -p $(DESTDIR)/$(MASON_DATA_PATH)/cache - mkdir -p $(DESTDIR)/$(MASON_DATA_PATH)/etc - mkdir -p $(DESTDIR)/$(MASON_DATA_PATH)/obj - mkdir -p $(DESTDIR)/$(MASON_SESSION_PATH) - mkdir -p $(DESTDIR)/$(MASON_HTML_PATH) - mkdir -p $(DESTDIR)/$(MASON_LOCAL_HTML_PATH) - mkdir -p $(DESTDIR)/$(LOCAL_ETC_PATH) - mkdir -p $(DESTDIR)/$(LOCAL_LEXICON_PATH) -# }}} - -install: config-install dirs files-install fixperms instruct - -files-install: libs-install etc-install bin-install sbin-install html-install local-install doc-install - -config-install: - mkdir -p $(DESTDIR)/$(CONFIG_FILE_PATH) - cp etc/RT_Config.pm $(DESTDIR)/$(CONFIG_FILE) - [ -f $(DESTDIR)/$(SITE_CONFIG_FILE) ] || cp etc/RT_SiteConfig.pm $(DESTDIR)/$(SITE_CONFIG_FILE) - - chgrp $(RTGROUP) $(DESTDIR)/$(CONFIG_FILE) - chown $(BIN_OWNER) $(DESTDIR)/$(CONFIG_FILE) - - chgrp $(RTGROUP) $(DESTDIR)/$(SITE_CONFIG_FILE) - chown $(BIN_OWNER) $(DESTDIR)/$(SITE_CONFIG_FILE) - - @echo "Installed configuration. about to install rt in $(RT_PATH)" - -test: - $(PERL) -Ilib lib/t/00smoke.t - -regression-nosetgid-quiet: config-install dirs files-install libs-install sbin-install bin-install regression-instruct regression-reset-db testify-pods fixperms-nosetgid apachectl - $(PERL) sbin/regression_harness - -regression-nosetgid: config-install dirs files-install libs-install sbin-install bin-install regression-instruct regression-reset-db testify-pods fixperms-nosetgid apachectl - $(PERL) lib/t/02regression.t - -regression: config-install dirs files-install libs-install sbin-install bin-install regression-instruct regression-reset-db testify-pods apachectl - $(PERL) lib/t/02regression.t - -regression-quiet: - $(PERL) sbin/regression_harness - -regression-instruct: - @echo "About to wipe your database for a regression test. ABORT NOW with Control-C" - - -# {{{ database-installation - -regression-reset-db: - $(PERL) $(DESTDIR)/$(RT_SBIN_PATH)/rt-setup-database --action drop --dba $(DB_DBA) --dba-password '' - $(PERL) $(DESTDIR)/$(RT_SBIN_PATH)/rt-setup-database --action init --dba $(DB_DBA) --dba-password '' - -initialize-database: - $(PERL) $(DESTDIR)/$(RT_SBIN_PATH)/rt-setup-database --action init --dba $(DB_DBA) --prompt-for-dba-password - -dropdb: - $(PERL) $(DESTDIR)/$(RT_SBIN_PATH)/rt-setup-database --action drop --dba $(DB_DBA) --prompt-for-dba-password - -insert-approval-data: - $(PERL) $(DESTDIR)/$(RT_SBIN_PATH)/insert_approval_scrips -# }}} - -# {{{ libs-install -libs-install: - [ -d $(DESTDIR)/$(RT_LIB_PATH) ] || mkdir $(DESTDIR)/$(RT_LIB_PATH) - -cp -rp lib/* $(DESTDIR)/$(RT_LIB_PATH) -# }}} - -# {{{ html-install -html-install: - [ -d $(DESTDIR)/$(MASON_HTML_PATH) ] || mkdir $(DESTDIR)/$(MASON_HTML_PATH) - -cp -rp ./html/* $(DESTDIR)/$(MASON_HTML_PATH) -# }}} - -# {{{ doc-install -doc-install: - # RT 3.0.0 - RT 3.0.2 would accidentally create a file instead of a dir - -[ -f $(DESTDIR)/$(RT_DOC_PATH) ] && rm $(DESTDIR)/$(RT_DOC_PATH) - [ -d $(DESTDIR)/$(RT_DOC_PATH) ] || mkdir $(DESTDIR)/$(RT_DOC_PATH) - -cp -rp ./README $(DESTDIR)/$(RT_DOC_PATH) -# }}} - -# {{{ etc-install - -etc-install: - mkdir -p $(DESTDIR)/$(RT_ETC_PATH) - -cp -rp \ - etc/acl.* \ - etc/initialdata \ - etc/schema.* \ - $(DESTDIR)/$(RT_ETC_PATH) -# }}} - -# {{{ sbin-install - -sbin-install: - mkdir -p $(DESTDIR)/$(RT_SBIN_PATH) - chmod +x sbin/rt-setup-database \ - sbin/rt-test-dependencies - -cp -rp \ - sbin/rt-setup-database \ - sbin/rt-test-dependencies \ - $(DESTDIR)/$(RT_SBIN_PATH) - -# }}} - -# {{{ bin-install - -bin-install: - mkdir -p $(DESTDIR)/$(RT_BIN_PATH) - chmod +x bin/rt-mailgate \ - bin/rt-crontool - -cp -rp \ - bin/rt-mailgate \ - bin/mason_handler.fcgi \ - bin/mason_handler.svc \ - bin/webmux.pl \ - bin/rt-crontool \ - $(DESTDIR)/$(RT_BIN_PATH) -# }}} - -# {{{ local-install -local-install: - -cp -rp ./local/html/* $(DESTDIR)/$(MASON_LOCAL_HTML_PATH) - -cp -rp ./local/po/* $(DESTDIR)/$(LOCAL_LEXICON_PATH) - -cp -rp ./local/etc/* $(DESTDIR)/$(LOCAL_ETC_PATH) -# }}} - -# {{{ Best Practical Build targets -- no user servicable parts inside - - -POD2TEST_EXE = sbin/extract_pod_tests - -testify-pods: - [ -d lib/t/autogen ] || mkdir lib/t/autogen - find lib -name \*pm |grep -v \*.in |xargs -n 1 $(PERL) $(POD2TEST_EXE) - find bin -type f |grep -v \~ | grep -v "\.in" | xargs -n 1 $(PERL) $(POD2TEST_EXE) - - - -regenerate-catalogs: - $(PERL) sbin/extract-message-catalog - -license-tag: - $(PERL) sbin/license_tag - -factory: initialize-database - cd lib; $(PERL) ../sbin/factory $(DB_DATABASE) RT - -commit: - aegis -build ; aegis -diff ; aegis -test; aegis -develop_end - -integrate: - aegis -integrate_begin; aegis -build; aegis -diff; aegis -test ; aegis -integrate_pass - -predist: commit tag-and-tar - -tag-and-release-baseline: - aegis -cp -ind Makefile -output /tmp/Makefile.tagandrelease; \ - $(MAKE) -f /tmp/Makefile.tagandrelease tag-and-release-never-by-hand - - -# Running this target in a working directory is -# WRONG WRONG WRONG. -# it will tag the current baseline with the version of RT defined -# in the currently-being-worked-on makefile. which is wrong. -# you want tag-and-release-baseline - -tag-and-release-never-by-hand: - aegis --delta-name $(TAG) - rm -rf /tmp/$(TAG) - mkdir /tmp/$(TAG) - cd /tmp/$(TAG); \ - aegis -cp -ind -delta $(TAG) . ;\ - make reconfigure;\ - chmod 600 Makefile;\ - aegis --report --project rt.$(RT_VERSION_MAJOR) \ - --page_width 80 \ - --page_length 9999 \ - --change $(RT_VERSION_MINOR) --output Changelog Change_Log - - cd /tmp; tar czvf /home/ftp/pub/rt/devel/$(TAG).tar.gz $(TAG)/ - chmod 644 /home/ftp/pub/rt/devel/$(TAG).tar.gz - - -reconfigure: - aclocal -I m4 - autoconf - chmod 755 ./configure - ./configure - -rpm: - (cd ..; tar czvf /usr/src/redhat/SOURCES/rt.tar.gz rt) - rpm -ba etc/rt.spec - - -apachectl: - apachectl stop - sleep 3 - apachectl start -# }}} diff --git a/rt/Makefile.in b/rt/Makefile.in deleted file mode 100644 index c3eabc634..000000000 --- a/rt/Makefile.in +++ /dev/null @@ -1,490 +0,0 @@ -# BEGIN LICENSE BLOCK -# -# Copyright (c) 1996-2003 Jesse Vincent -# -# (Except where explictly superceded by other copyright notices) -# -# This work is made available to you under the terms of Version 2 of -# the GNU General Public License. A copy of that license should have -# been provided with this software, but in any event can be snarfed -# from www.gnu.org. -# -# This work 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. -# -# Unless otherwise specified, all modifications, corrections or -# extensions to this work which alter its source code become the -# property of Best Practical Solutions, LLC when submitted for -# inclusion in the work. -# -# -# END LICENSE BLOCK -# -# DO NOT HAND-EDIT the file named 'Makefile'. This file is autogenerated. -# Have a look at "configure" and "Makefile.in" instead -# - - -PERL = @PERL@ - -CONFIG_FILE_PATH = @CONFIG_FILE_PATH@ -CONFIG_FILE = $(CONFIG_FILE_PATH)/RT_Config.pm -SITE_CONFIG_FILE = $(CONFIG_FILE_PATH)/RT_SiteConfig.pm - - -RT_VERSION_MAJOR = @RT_VERSION_MAJOR@ -RT_VERSION_MINOR = @RT_VERSION_MINOR@ -RT_VERSION_PATCH = @RT_VERSION_PATCH@ - -RT_VERSION = $(RT_VERSION_MAJOR).$(RT_VERSION_MINOR).$(RT_VERSION_PATCH) -TAG = rt-$(RT_VERSION_MAJOR)-$(RT_VERSION_MINOR)-$(RT_VERSION_PATCH) - - -# This is the group that all of the installed files will be chgrp'ed to. -RTGROUP = @RTGROUP@ - - -# User which should own rt binaries. -BIN_OWNER = @BIN_OWNER@ - -# User that should own all of RT's libraries, generally root. -LIBS_OWNER = @LIBS_OWNER@ - -# Group that should own all of RT's libraries, generally root. -LIBS_GROUP = @LIBS_GROUP@ - -WEB_USER = @WEB_USER@ -WEB_GROUP = @WEB_GROUP@ - -# {{{ Files and directories - -# DESTDIR allows you to specify that RT be installed somewhere other than -# where it will eventually reside - -DESTDIR = - - -RT_PATH = @RT_PATH@ -RT_ETC_PATH = @RT_ETC_PATH@ -RT_BIN_PATH = @RT_BIN_PATH@ -RT_SBIN_PATH = @RT_SBIN_PATH@ -RT_LIB_PATH = @RT_LIB_PATH@ -RT_MAN_PATH = @RT_MAN_PATH@ -RT_VAR_PATH = @RT_VAR_PATH@ -RT_DOC_PATH = @RT_DOC_PATH@ -RT_LOCAL_PATH = @RT_LOCAL_PATH@ -LOCAL_ETC_PATH = @LOCAL_ETC_PATH@ -LOCAL_LEXICON_PATH = @LOCAL_LEXICON_PATH@ -MASON_HTML_PATH = @MASON_HTML_PATH@ -MASON_LOCAL_HTML_PATH = @MASON_LOCAL_HTML_PATH@ -MASON_DATA_PATH = @MASON_DATA_PATH@ -MASON_SESSION_PATH = @MASON_SESSION_PATH@ -RT_LOG_PATH = @RT_LOG_PATH@ - -# RT_READABLE_DIR_MODE is the mode of directories that are generally meant -# to be accessable -RT_READABLE_DIR_MODE = 0755 - - - - -# {{{ all these define the places that RT's binaries should get installed - -# RT_MODPERL_HANDLER is the mason handler script for mod_perl -RT_MODPERL_HANDLER = $(RT_BIN_PATH)/webmux.pl -# RT_FASTCGI_HANDLER is the mason handler script for FastCGI -RT_FASTCGI_HANDLER = $(RT_BIN_PATH)/mason_handler.fcgi -# RT_WIN32_FASTCGI_HANDLER is the mason handler script for FastCGI -RT_WIN32_FASTCGI_HANDLER = $(RT_BIN_PATH)/mason_handler.svc -# RT's CLI -RT_CLI_BIN = $(RT_BIN_PATH)/rt -# RT's mail gateway -RT_MAILGATE_BIN = $(RT_BIN_PATH)/rt-mailgate -# RT's cron tool -RT_CRON_BIN = $(RT_BIN_PATH)/rt-crontool - -# }}} - -SETGID_BINARIES = $(DESTDIR)/$(RT_FASTCGI_HANDLER) \ - $(DESTDIR)/$(RT_WIN32_FASTCGI_HANDLER) - -BINARIES = $(DESTDIR)/$(RT_MODPERL_HANDLER) \ - $(DESTDIR)/$(RT_MAILGATE_BIN) \ - $(DESTDIR)/$(RT_CLI_BIN) \ - $(DESTDIR)/$(RT_CRON_BIN) \ - $(SETGID_BINARIES) -SYSTEM_BINARIES = $(DESTDIR)/$(RT_SBIN_PATH)/ - - -# }}} - -# {{{ Database setup - -# -# DB_TYPE defines what sort of database RT trys to talk to -# "mysql" is known to work. -# "Pg" is known to work -# "Informix" is known to work - -DB_TYPE = @DB_TYPE@ - -# Set DBA to the name of a unix account with the proper permissions and -# environment to run your commandline SQL sbin - -# Set DB_DBA to the name of a DB user with permission to create new databases - -# For mysql, you probably want 'root' -# For Pg, you probably want 'postgres' -# For Oracle, you want 'system' -# For Informix, you want 'informix' - -DB_DBA = @DB_DBA@ - -DB_HOST = @DB_HOST@ - -# If you're not running your database server on its default port, -# specifiy the port the database server is running on below. -# It's generally safe to leave this blank - -DB_PORT = @DB_PORT@ - - - - -# -# Set this to the canonical name of the interface RT will be talking to the -# database on. If you said that the RT_DB_HOST above was "localhost," this -# should be too. This value will be used to grant rt access to the database. -# If you want to access the RT database from multiple hosts, you'll need -# to grant those database rights by hand. -# - -DB_RT_HOST = @DB_RT_HOST@ - -# set this to the name you want to give to the RT database in -# your database server. For Oracle, this should be the name of your sid - -DB_DATABASE = @DB_DATABASE@ -DB_RT_USER = @DB_RT_USER@ -DB_RT_PASS = @DB_RT_PASS@ - -# }}} - - -#################################################################### - -all: default - -default: - @echo "Please read RT's readme before installing. Not doing so could" - @echo "be dangerous." - - - -instruct: - @echo "Congratulations. RT has been installed. " - @echo "" - @echo "" - @echo "You must now configure RT by editing $(SITE_CONFIG_FILE)." - @echo "" - @echo "(You will definitely need to set RT's database password before continuing." - @echo " Not doing so could be very dangerous)" - @echo "" - @echo "After that, you need to initialize RT's database by running" - @echo " 'make initialize-database'" - -# @echo " or by executing " -# @echo " '$(RT_SBIN_PATH)/rt-setup-database --action init \ " -# @echo " --dba $(DB_DBA) --prompt-for-dba-password'" - - - -upgrade-instruct: - @echo "Congratulations. RT has been upgraded. You should now check-over" - @echo "$(CONFIG_FILE) for any necessary site customization. Additionally," - @echo "you should update RT's system database objects by running " - @echo " ls etc/upgrade" - @echo "For each file in that directory whose name is greater than" - @echo "your previously installed RT version, run:" - @echo " $(RT_SBIN_PATH)/rt-setup-database --action insert --datafile etc/upgrade/" - - -upgrade: config-install dirs files-install fixperms upgrade-instruct - -upgrade-noclobber: config-install libs-install html-install bin-install local-install doc-install fixperms - - -# {{{ dependencies -testdeps: - $(PERL) ./sbin/rt-test-dependencies --with-$(DB_TYPE) - -fixdeps: - $(PERL) ./sbin/rt-test-dependencies --install --with-$(DB_TYPE) - -#}}} - -# {{{ fixperms -fixperms: - # Make the libraries readable - chmod $(RT_READABLE_DIR_MODE) $(DESTDIR)/$(RT_PATH) - chown -R $(LIBS_OWNER) $(DESTDIR)/$(RT_LIB_PATH) - chgrp -R $(LIBS_GROUP) $(DESTDIR)/$(RT_LIB_PATH) - chmod -R u+rwX,go-w,go+rX $(DESTDIR)/$(RT_LIB_PATH) - - - chmod $(RT_READABLE_DIR_MODE) $(DESTDIR)/$(RT_BIN_PATH) - chmod $(RT_READABLE_DIR_MODE) $(DESTDIR)/$(RT_BIN_PATH) - - chmod 0755 $(DESTDIR)/$(RT_ETC_PATH) - chmod 0500 $(DESTDIR)/$(RT_ETC_PATH)/* - - #TODO: the config file should probably be able to have its - # owner set seperately from the binaries. - chown -R $(BIN_OWNER) $(DESTDIR)/$(RT_ETC_PATH) - chgrp -R $(RTGROUP) $(DESTDIR)/$(RT_ETC_PATH) - - chmod 0550 $(DESTDIR)/$(CONFIG_FILE) - chmod 0550 $(DESTDIR)/$(SITE_CONFIG_FILE) - - # Make the interfaces executable and setgid rt - chown $(BIN_OWNER) $(BINARIES) - chgrp $(RTGROUP) $(BINARIES) - chmod 0755 $(BINARIES) - chmod g+s $(SETGID_BINARIES) - - # Make the web ui readable by all. - chmod -R u+rwX,go-w,go+rX $(DESTDIR)/$(MASON_HTML_PATH) \ - $(DESTDIR)/$(MASON_LOCAL_HTML_PATH) \ - $(DESTDIR)/$(LOCAL_LEXICON_PATH) - chown -R $(LIBS_OWNER) $(DESTDIR)/$(MASON_HTML_PATH) \ - $(DESTDIR)/$(MASON_LOCAL_HTML_PATH) - chgrp -R $(LIBS_GROUP) $(DESTDIR)/$(MASON_HTML_PATH) \ - $(DESTDIR)/$(MASON_LOCAL_HTML_PATH) - - # Make the web ui's data dir writable - chmod 0770 $(DESTDIR)/$(MASON_DATA_PATH) \ - $(DESTDIR)/$(MASON_SESSION_PATH) - chown -R $(WEB_USER) $(DESTDIR)/$(MASON_DATA_PATH) \ - $(DESTDIR)/$(MASON_SESSION_PATH) - chgrp -R $(WEB_GROUP) $(DESTDIR)/$(MASON_DATA_PATH) \ - $(DESTDIR)/$(MASON_SESSION_PATH) -# }}} - -fixperms-nosetgid: fixperms - @echo "You should never be running RT this way. it's unsafe" - chmod 0555 $(SETGID_BINARIES) - chmod 0555 $(DESTDIR)/$(CONFIG_FILE) - chmod 0555 $(DESTDIR)/$(SITE_CONFIG_FILE) - -# {{{ dirs -dirs: - mkdir -p $(DESTDIR)/$(RT_LOG_PATH) - mkdir -p $(DESTDIR)/$(MASON_DATA_PATH) - mkdir -p $(DESTDIR)/$(MASON_DATA_PATH)/cache - mkdir -p $(DESTDIR)/$(MASON_DATA_PATH)/etc - mkdir -p $(DESTDIR)/$(MASON_DATA_PATH)/obj - mkdir -p $(DESTDIR)/$(MASON_SESSION_PATH) - mkdir -p $(DESTDIR)/$(MASON_HTML_PATH) - mkdir -p $(DESTDIR)/$(MASON_LOCAL_HTML_PATH) - mkdir -p $(DESTDIR)/$(LOCAL_ETC_PATH) - mkdir -p $(DESTDIR)/$(LOCAL_LEXICON_PATH) -# }}} - -install: config-install dirs files-install fixperms instruct - -files-install: libs-install etc-install bin-install sbin-install html-install local-install doc-install - -config-install: - mkdir -p $(DESTDIR)/$(CONFIG_FILE_PATH) - cp etc/RT_Config.pm $(DESTDIR)/$(CONFIG_FILE) - [ -f $(DESTDIR)/$(SITE_CONFIG_FILE) ] || cp etc/RT_SiteConfig.pm $(DESTDIR)/$(SITE_CONFIG_FILE) - - chgrp $(RTGROUP) $(DESTDIR)/$(CONFIG_FILE) - chown $(BIN_OWNER) $(DESTDIR)/$(CONFIG_FILE) - - chgrp $(RTGROUP) $(DESTDIR)/$(SITE_CONFIG_FILE) - chown $(BIN_OWNER) $(DESTDIR)/$(SITE_CONFIG_FILE) - - @echo "Installed configuration. about to install rt in $(RT_PATH)" - -test: - $(PERL) -Ilib lib/t/00smoke.t - -regression-install: config-install - $(PERL) -pi -e 's/Set\(\$$DatabaseName.*\);/Set\(\$$DatabaseName, "rt3regression"\);/' $(DESTDIR)/$(CONFIG_FILE) - -regression-nosetgid-quiet: regression-install dirs files-install libs-install sbin-install bin-install regression-instruct regression-reset-db testify-pods fixperms-nosetgid apachectl - $(PERL) sbin/regression_harness - -regression-nosetgid: regression-install dirs files-install libs-install sbin-install bin-install regression-instruct regression-reset-db testify-pods fixperms-nosetgid apachectl - $(PERL) lib/t/02regression.t - -regression: regression-install dirs files-install libs-install sbin-install bin-install regression-instruct regression-reset-db testify-pods fixperms apachectl - $(PERL) lib/t/02regression.t - -regression-quiet: - $(PERL) sbin/regression_harness - -regression-instruct: - @echo "About to wipe your database for a regression test. ABORT NOW with Control-C" - - -# {{{ database-installation - -regression-reset-db: - $(PERL) $(DESTDIR)/$(RT_SBIN_PATH)/rt-setup-database --action drop --dba $(DB_DBA) --dba-password '' - $(PERL) $(DESTDIR)/$(RT_SBIN_PATH)/rt-setup-database --action init --dba $(DB_DBA) --dba-password '' - -initialize-database: - $(PERL) $(DESTDIR)/$(RT_SBIN_PATH)/rt-setup-database --action init --dba $(DB_DBA) --prompt-for-dba-password - -dropdb: - $(PERL) $(DESTDIR)/$(RT_SBIN_PATH)/rt-setup-database --action drop --dba $(DB_DBA) --prompt-for-dba-password - -insert-approval-data: - $(PERL) $(DESTDIR)/$(RT_SBIN_PATH)/insert_approval_scrips -# }}} - -# {{{ libs-install -libs-install: - [ -d $(DESTDIR)/$(RT_LIB_PATH) ] || mkdir $(DESTDIR)/$(RT_LIB_PATH) - -cp -rp lib/* $(DESTDIR)/$(RT_LIB_PATH) -# }}} - -# {{{ html-install -html-install: - [ -d $(DESTDIR)/$(MASON_HTML_PATH) ] || mkdir $(DESTDIR)/$(MASON_HTML_PATH) - -cp -rp ./html/* $(DESTDIR)/$(MASON_HTML_PATH) -# }}} - -# {{{ doc-install -doc-install: - # RT 3.0.0 - RT 3.0.2 would accidentally create a file instead of a dir - -[ -f $(DESTDIR)/$(RT_DOC_PATH) ] && rm $(DESTDIR)/$(RT_DOC_PATH) - [ -d $(DESTDIR)/$(RT_DOC_PATH) ] || mkdir $(DESTDIR)/$(RT_DOC_PATH) - -cp -rp ./README $(DESTDIR)/$(RT_DOC_PATH) -# }}} - -# {{{ etc-install - -etc-install: - mkdir -p $(DESTDIR)/$(RT_ETC_PATH) - -cp -rp \ - etc/acl.* \ - etc/initialdata \ - etc/schema.* \ - $(DESTDIR)/$(RT_ETC_PATH) -# }}} - -# {{{ sbin-install - -sbin-install: - mkdir -p $(DESTDIR)/$(RT_SBIN_PATH) - chmod +x sbin/rt-setup-database \ - sbin/rt-test-dependencies - -cp -rp \ - sbin/rt-setup-database \ - sbin/rt-test-dependencies \ - $(DESTDIR)/$(RT_SBIN_PATH) - -# }}} - -# {{{ bin-install - -bin-install: - mkdir -p $(DESTDIR)/$(RT_BIN_PATH) - chmod +x bin/rt-mailgate \ - bin/rt-crontool - -cp -rp \ - bin/rt-mailgate \ - bin/mason_handler.fcgi \ - bin/mason_handler.scgi \ - bin/mason_handler.svc \ - bin/rt \ - bin/webmux.pl \ - bin/rt-crontool \ - $(DESTDIR)/$(RT_BIN_PATH) -# }}} - -# {{{ local-install -local-install: - -cp -rp ./local/html/* $(DESTDIR)/$(MASON_LOCAL_HTML_PATH) - -cp -rp ./local/po/* $(DESTDIR)/$(LOCAL_LEXICON_PATH) - -cp -rp ./local/etc/* $(DESTDIR)/$(LOCAL_ETC_PATH) -# }}} - -# {{{ Best Practical Build targets -- no user servicable parts inside - - -POD2TEST_EXE = sbin/extract_pod_tests - -testify-pods: - [ -d lib/t/autogen ] || mkdir lib/t/autogen - find lib -name \*pm |grep -v \*.in |xargs -n 1 $(PERL) $(POD2TEST_EXE) - find bin -type f |grep -v \~ | grep -v "\.in" | xargs -n 1 $(PERL) $(POD2TEST_EXE) - - - -regenerate-catalogs: - $(PERL) sbin/extract-message-catalog - -license-tag: - $(PERL) sbin/license_tag - -factory: initialize-database - cd lib; $(PERL) ../sbin/factory $(DB_DATABASE) RT - -commit: - aegis -build ; aegis -diff ; aegis -test; aegis -develop_end - -integrate: - aegis -integrate_begin; aegis -build; aegis -diff; aegis -test ; aegis -integrate_pass - -predist: commit tag-and-tar - -tag-and-release-baseline: - aegis -cp -ind Makefile -output /tmp/Makefile.tagandrelease; \ - $(MAKE) -f /tmp/Makefile.tagandrelease tag-and-release-never-by-hand - - -# Running this target in a working directory is -# WRONG WRONG WRONG. -# it will tag the current baseline with the version of RT defined -# in the currently-being-worked-on makefile. which is wrong. -# you want tag-and-release-baseline - -tag-and-release-never-by-hand: - aegis --delta-name $(TAG) - rm -rf /tmp/$(TAG) - mkdir /tmp/$(TAG) - cd /tmp/$(TAG); \ - aegis -cp -ind -delta $(TAG) . ;\ - make reconfigure;\ - chmod 600 Makefile;\ - aegis --report --project rt.$(RT_VERSION_MAJOR) \ - --page_width 80 \ - --page_length 9999 \ - --change $(RT_VERSION_MINOR) --output Changelog Change_Log - - cd /tmp; tar czvf /home/ftp/pub/rt/devel/$(TAG).tar.gz $(TAG)/ - chmod 644 /home/ftp/pub/rt/devel/$(TAG).tar.gz - - -reconfigure: - aclocal -I m4 - autoconf - chmod 755 ./configure - ./configure - -rpm: - (cd ..; tar czvf /usr/src/redhat/SOURCES/rt.tar.gz rt) - rpm -ba etc/rt.spec - - -apachectl: - apachectl stop - sleep 3 - apachectl start -# }}} diff --git a/rt/README b/rt/README deleted file mode 100755 index 7c5e4d47a..000000000 --- a/rt/README +++ /dev/null @@ -1,300 +0,0 @@ -# BEGIN LICENSE BLOCK -# -# Copyright (c) 1996-2003 Jesse Vincent -# -# (Except where explictly superceded by other copyright notices) -# -# This work is made available to you under the terms of Version 2 of -# the GNU General Public License. A copy of that license should have -# been provided with this software, but in any event can be snarfed -# from www.gnu.org. -# -# This work 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. -# -# Unless otherwise specified, all modifications, corrections or -# extensions to this work which alter its source code become the -# property of Best Practical Solutions, LLC when submitted for -# inclusion in the work. -# -# -# END LICENSE BLOCK -RT is an enterprise-grade issue tracking system. It allows -organizations to keep track of their to-do lists, who is working -on which tasks, what's already been done, and when tasks were -completed. It is available under the terms of version 2 of the GNU -General Public License (GPL), so it doesn't cost anything to set -up and use. - - - Jesse Vincent - Best Practical Solutions, LLC - March 2003 - -REQUIRED PACKAGES: ------------------- - -o Perl 5.8.0 or later (http://www.perl.com). - - (If you intend to use the FastCGI or SpeedyCGI support, you - need to make sure that perl has been built with support for - setgid perl scripts.)` - - Perl 5.6.1 is currently deprecated and will be officially desupported - in a future release - -o A DB backend; MySQL is recommended ( http://www.mysql.com ) - Currently supported: Mysql 4.0.13 or later. - Postgres 7.2 or later. - - Mysql 3.23.46 or newer with support for InnoDB - is currently deprecated and will be officially - desupported in a future release. - -o Apache version 1.3.x or 2.x (http://httpd.apache.org) - with mod_perl -- (http://perl.apache.org ) - or a webserver with FastCGI support (www.fastcgi.com) - - mod_perl 2.0 isn't quite ready for prime_time just yet; - Best Practical Solutions strongly recommends that sites use - Apache 1.3 or FastCGI. - - Compiling mod_perl on Apache 1.3.x as a DSO has been known - to have massive stability problems and is not recommended. - - mod_perl 1.x must be build with EVERYTHING=1 - - RT's FastCGI handler runs setgid to the 'rt' group to - protect RT's database password. You may need to install - a special "suidperl" package or reconfigure your perl - setup to support "setuid scripts" if you intend to use RT - with FastCGI. - - Debian GNU/* 3.0+: the package which installs suidperl is - called perl-suid, and should work without any tweaking. - - FreeBSD 4.2+: the package is called sperl, and should - install a suidperl that just works - - Conectiva Linux 6.0+: suidperl is installed by default when - perl is installed, but the program /bin/suidperl is not setuid. - You must use chmod to make it setuid. - - - -o Various and sundry perl modules - A tool included with RT takes care of the installation of - most of these automatically during the install process. - - The tool supplied with RT uses Perl's CPAN system - (http://www.cpan.org) to install modules. Some operating - systems package all or some of the modules required and - you may be better off installing the modules that way. - - -GENERAL INSTALLATION --------------------- - -This is a rough guide to installing RT. For more detail, you'll want -to read 'Chapter 2: Installing' in RT's manual, available at -http://www.bestpractical.com/rt - -1 Unpack this distribution SOMWHERE OTHER THAN where you want to install RT - - Granted, you've already got it open. To do this cleanly: - - tar xzvf rt.tar.gz -C /tmp - -2 Run the "configure" script. - - ./configure --help to see the list of options - ./configure (with the flags you want) - -3 Satisfy RT's myriad dependencies. - -3.1 Check for compliance: - - perl sbin/rt-test-dependencies \ - --with- --with- - - databasename is one of: mysql, postgres - web-environment is one of: fastcgi, modperl1, modperl2 - -3.2 If there are unsatisfied dependencies, install them by hand or run: - - perl sbin/rt-test-dependencies \ - --with- --with- --install - - -3.3 Check to make sure everything was installed properly: - - perl sbin/rt-test-dependencies \ - --with- --with- - -4 Create a group called 'rt' - -5a FOR A NEW INSTALLATION: - - As root, type: - make install (replace "make" with the local name for - Make, if you need to) - - - make initialize-database - - - If the make fails, type: - make dropdb - and start over from step 5a - -5b FOR UPGRADING: (Within the RT 3.0.x series) - - As root, type: - make upgrade (replace "make" with the local name for - Make, if you need to) - - This will build new binaries, config files and libraries without - overwriting your RT database. - - It may then instruct you to update your RT system database objects - -6 Edit etc/RT_SiteConfig.pm in your RT installation directory, by specifying - any values you need to change from the defaults in etc/RT_Config.pm - -7 Configure the email and web gateways, as described below. - -8 Stop and start your webserver, so it picks up your configuration changes. - - NOTE: root's password for the web interface is "password" - (without the quotes.) Not changing this is a SECURITY risk - -9 Configure RT per the instructions in RT's manual. - - Until you do this, RT will not be able to send or receive email, - nor will it be more than marginally functional. This is not an - optional step. - - -THE WEB INTERFACE ------------------ - -RT's web interface is based around HTML::Mason, which works best with the mod_perl -perl interpreter within Apache httpd. Alternatively, support for the FastCGI -(and plain CGI) interface is also provided as 'bin/mason_handler.fcgi'. - -Apache - You'll need to add a few lines to your httpd.conf telling it about RT: - - - ServerName your.rt.server.hostname - DocumentRoot /opt/rt3/share/html - AddDefaultCharset UTF-8 - - # this line applies to Apache2+mod_perl2 only - PerlModule Apache2 Apache::compat - - PerlModule Apache::DBI - PerlRequire /opt/rt3/bin/webmux.pl - - # this section applies to Apache 1 only - - SetHandler perl-script - PerlHandler RT::Mason - - - # this section applies to Apache2+mod_perl2 only - - SetHandler perl-script - PerlHandler RT::Mason - - - SetHandler perl-script - PerlHandler RT::Mason - - - SetHandler perl-script - PerlHandler RT::Mason - - - - - -SETTING UP THE MAIL GATEWAY ---------------------------- - -An alias for the initial queue will need to be made in either your -global mail aliases file (if you are using NIS) or locally on your -machine. - -Add the following lines to /etc/aliases (or your local equivalent) : - -rt: "|/opt/rt3/bin/rt-mailgate --queue general --action correspond --url http://localhost/" -rt-comment: "|/opt/rt3/bin/rt-mailgate --queue general --action comment --url http://localhost/" - | | | - ----/ | | - | | - ---/ | - | - ---/ - - -BUGS ----- - -To report a bug, send email to rt-3.0-bugs@fsck.com. - -GETTING HELP ------------- - -If RT is mission-critical for you or if you use it heavily, we recommend that -you purchase a commercial support contract. Details on support contracts -are available at http://www.bestpractical.com. - -If you're interested in having RT extended or customized or would like more -information about commercial support options, please send email to - to discuss rates and availability. - - -RT-USERS MAILINGLIST --------------------- - -To keep up to date on the latest RT tips, techniques and extensions, -you probably want to join the rt-users mailing list. Send a message to: - - rt-users-request@lists.fsck.com - -With the body of the message consisting of only the word: - - subscribe - -If you're interested in hacking on RT, you'll want to subscribe to -rt-devel@lists.fsck.com. Subscribe to it with instructions similar to -those above. - -Address questions about the stable release to the rt-users list, and -questions about the development version to the rt-devel list. If you feel -your questions are best not asked publicly, send them personally to -. - - -RT WEBSITE ----------- - -For current information about RT, check out the RT website at - http://www.bestpractical.com/ - -You'll find screenshots, a pointer to the current version of RT, contributed -patches, and lots of other great stuff. - - -TROUBLESHOOTING ---------------- - -If the solution to the problem you're running into isn't obvious and you've -checked the FAQ, feel free to send mail to rt-users@fsck.com (for released -versions of RT) or rt-devel@fsck.com (for development versions). - -Thanks! diff --git a/rt/README.Oracle b/rt/README.Oracle deleted file mode 100644 index 41bec822c..000000000 --- a/rt/README.Oracle +++ /dev/null @@ -1,37 +0,0 @@ -In order to install RT with Oracle, the database must first be -prepared. Ports of RT to other databases will automatically create -the RT schema. This is not done for Oracle because most sites wishing -to deploy RT on Oracle will have choose to make specific configuration -of the RT user, for example to select the appropriate tablespace or to -set up a resource profile. The RT user must have appropriate -privileges similar to the resource and connect roles and must have the -"query rewrite" system privilege. - Here is an example of commands to create an RT user called "RT" with -a password of "rt". - - create user rt identified by rt default tablespace users temporary - tablespace temp; - grant resource, connect, query rewrite to rt; - - -RT should not run its schema creation as the Oracle DBA; instead the -schema creation should be run as the RT user. To accomplish this set -the --with-rt-dba configuration parameter to the RT user, not to the -Oracle DBA. As an example, the following might be appropriate to -configure RT for the example.com Oracle database. - - ./configure --prefix /usr/local/rt --with-db-type=Oracle \ - --with-db-dba=rt --with-db-database=example.com \ - --with-db-rt-user=rt \ - --with-db-rt-pass=rt - - -As with all databases it is important to analyze the Schema and get -current statistics after any significant dataset change. Oracle's -cost-based optimizer can provide particularly bad performance when the -schema statistics are significantly inaccurate. To analyze the schema -of a user called rt, execute the following from withing Sqlplus. - - execute dbms_utility.analyze_schema( 'RT', 'estimate'); - - diff --git a/rt/UPGRADING b/rt/UPGRADING deleted file mode 100644 index 4306eb6cb..000000000 --- a/rt/UPGRADING +++ /dev/null @@ -1,64 +0,0 @@ -UPGRADING - - -******* -WARNING -******* - - -Before making any changes to your database, always ensure that you have a -complete current backup. If you don't have a current backup, you could -accidentally damage your database and lose data or worse. - - - -Look for the - - ----------------------------------------------------------------------- - -3.0.7 -===== - -All Databases -------------- - -If you are upgrading from versions between 3.0.0 and 3.0.7, inclusive, -you might find improved performance by adding the following index to -your database: - -CREATE INDEX Links4 ON Links(Type,LocalBase); - - - -3.0.6 -===== - - -All Databases -------------- - -If you are upgrading from versions between 3.0.0 and 3.0.6, inclusive, -you might find improved performance by adding the following indices to -your database: - - CREATE INDEX TicketCustomFieldValues1 ON TicketCustomFieldValues (CustomField,Ticket,Content); - CREATE INDEX TicketCustomFieldValues2 ON TicketCustomFieldValues (CustomField,Ticket); - - CREATE INDEX CustomFieldValues1 ON CustomFieldValues (CustomField); - - - -Postgres --------- - -If you have a Postgres database, the following changes to your -database can improve performance: - - ALTER TABLE groups rename instance to instance1; - ALTER TABLE groups add instance int; - UPDATE groups SET instance = instance1::text::int where btrim(instance1) <> ''; - ALTER TABLE groups drop column instance1; - - - diff --git a/rt/aclocal.m4 b/rt/aclocal.m4 deleted file mode 100644 index 475b3890d..000000000 --- a/rt/aclocal.m4 +++ /dev/null @@ -1,158 +0,0 @@ -dnl aclocal.m4 generated automatically by aclocal 1.4-p4 - -dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl This program is distributed in the hope that it will be useful, -dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without -dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A -dnl PARTICULAR PURPOSE. - -dnl -dnl @synopsis RT_ENABLE_LAYOUT() -dnl -dnl Enable a specific directory layout for the installation to use. -dnl This configures a command-line parameter that can be specified -dnl at ./configure invocation. -dnl -dnl The use of this feature in this way is a little hackish, but -dnl better than a heap of options for every directory. -dnl -dnl This code is heavily borrowed *cough* from the Apache 2 code. -dnl - -AC_DEFUN([RT_ENABLE_LAYOUT],[ -AC_ARG_ENABLE(layout, - AC_HELP_STRING([--enable-layout=LAYOUT], - [Use a specific directory layout (Default: RT3)]), - LAYOUT=$enableval) - -if test "x$LAYOUT" = "x"; then - LAYOUT="RT3" -fi -RT_LAYOUT($srcdir/config.layout, $LAYOUT) -AC_MSG_CHECKING(for chosen layout) -if test "x$rt_layout_name" = "xno"; then - if test "x$LAYOUT" = "xno"; then - AC_MSG_RESULT(none) - else - AC_MSG_RESULT($LAYOUT) - fi - AC_MSG_ERROR([a valid layout must be specified (or the default used)]) -else - AC_SUBST(rt_layout_name) - AC_MSG_RESULT($rt_layout_name) -fi -]) - -dnl -dnl @synopsis RT_LAYOUT(configlayout, layoutname) -dnl -dnl This macro reads an Apache-style layout file (specified as the -dnl configlayout parameter), and searches for a specific layout -dnl (named using the layoutname parameter). -dnl -dnl The entries for a given layout are then inserted into the -dnl environment such that they become available as substitution -dnl variables. In addition, the rt_layout_name variable is set -dnl (but not exported) if the layout is valid. -dnl -dnl This code is heavily borrowed *cough* from the Apache 2 codebase. -dnl - -AC_DEFUN([RT_LAYOUT],[ - if test ! -f $srcdir/config.layout; then - AC_MSG_WARN([Layout file $srcdir/config.layout not found]) - rt_layout_name=no - else - pldconf=./config.pld - $PERL -0777 -p -e "\$layout = '$2';" -e ' - s/.*//gims; - s/\<\/Layout\>.*//s; - s/^#.*$//m; - s/^\s+//gim; - s/\s+$/\n/gim; - s/\+$/\/rt3/gim; - # m4 will not let us just use $1, we need @S|@1 - s/^\s*((?:bin|sbin|libexec|data|sysconf|sharedstate|localstate|lib|include|oldinclude|info|man)dir)\s*:\s*(.*)$/@S|@1=@S|@2/gim; - s/^\s*(.*?)\s*:\s*(.*)$/\(test "x\@S|@@S|@1" = "xNONE" || test "x\@S|@@S|@1" = "x") && @S|@1=@S|@2/gim; - ' < $1 > $pldconf - - if test -s $pldconf; then - rt_layout_name=$2 - . $pldconf - changequote({,}) - for var in prefix exec_prefix bindir sbindir \ - sysconfdir mandir libdir datadir htmldir \ - localstatedir logfiledir masonstatedir \ - sessionstatedir customdir custometcdir customhtmldir \ - customlexdir customlibdir manualdir; do - eval "val=\"\$$var\"" - val=`echo $val | sed -e 's:\(.\)/*$:\1:'` - val=`echo $val | - sed -e 's:[\$]\([a-z_]*\):${\1}:g'` - eval "$var='$val'" - done - changequote([,]) - else - rt_layout_name=no - fi - #rm $pldconf - fi - RT_SUBST_EXPANDED_ARG(prefix) - RT_SUBST_EXPANDED_ARG(exec_prefix) - RT_SUBST_EXPANDED_ARG(bindir) - RT_SUBST_EXPANDED_ARG(sbindir) - RT_SUBST_EXPANDED_ARG(sysconfdir) - RT_SUBST_EXPANDED_ARG(mandir) - RT_SUBST_EXPANDED_ARG(libdir) - RT_SUBST_EXPANDED_ARG(datadir) - RT_SUBST_EXPANDED_ARG(htmldir) - RT_SUBST_EXPANDED_ARG(manualdir) - RT_SUBST_EXPANDED_ARG(localstatedir) - RT_SUBST_EXPANDED_ARG(logfiledir) - RT_SUBST_EXPANDED_ARG(masonstatedir) - RT_SUBST_EXPANDED_ARG(sessionstatedir) - RT_SUBST_EXPANDED_ARG(customdir) - RT_SUBST_EXPANDED_ARG(custometcdir) - RT_SUBST_EXPANDED_ARG(customhtmldir) - RT_SUBST_EXPANDED_ARG(customlexdir) - RT_SUBST_EXPANDED_ARG(customlibdir) -])dnl - -dnl -dnl @synopsis RT_SUBST_EXPANDED_ARG(var) -dnl -dnl Export (via AC_SUBST) a given variable, along with an expanded -dnl version of the variable (same name, but with exp_ prefix). -dnl -dnl This code is heavily borrowed *cough* from the Apache 2 source. -dnl - -AC_DEFUN([RT_SUBST_EXPANDED_ARG],[ - RT_EXPAND_VAR(exp_$1, [$]$1) - AC_SUBST($1) - AC_SUBST(exp_$1) -]) - -dnl -dnl @synopsis RT_EXPAND_VAR(baz, $fraz) -dnl -dnl Iteratively expands the second parameter, until successive iterations -dnl yield no change. The result is then assigned to the first parameter. -dnl -dnl This code is heavily borrowed from the Apache 2 codebase. -dnl - -AC_DEFUN([RT_EXPAND_VAR],[ - ap_last='' - ap_cur='$2' - while test "x${ap_cur}" != "x${ap_last}"; do - ap_last="${ap_cur}" - ap_cur=`eval "echo ${ap_cur}"` - done - $1="${ap_cur}" -]) - diff --git a/rt/autom4te.cache/output.0 b/rt/autom4te.cache/output.0 deleted file mode 100644 index 3d27db94f..000000000 --- a/rt/autom4te.cache/output.0 +++ /dev/null @@ -1,2771 +0,0 @@ -@%:@! /bin/sh -@%:@ From configure.ac Revision: 1.1 . -@%:@ Guess values for system-dependent variables and create Makefiles. -@%:@ Generated by GNU Autoconf 2.53 for RT 3.0.9. -@%:@ -@%:@ Report bugs to . -@%:@ -@%:@ Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 -@%:@ Free Software Foundation, Inc. -@%:@ This configure script is free software; the Free Software Foundation -@%:@ gives unlimited permission to copy, distribute and modify it. - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - - -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi - -# NLS nuisances. -# Support unset when possible. -if (FOO=FOO; unset FOO) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - -(set +x; test -n "`(LANG=C; export LANG) 2>&1`") && - { $as_unset LANG || test "${LANG+set}" != set; } || - { LANG=C; export LANG; } -(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && - { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || - { LC_ALL=C; export LC_ALL; } -(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && - { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || - { LC_TIME=C; export LC_TIME; } -(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && - { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || - { LC_CTYPE=C; export LC_CTYPE; } -(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && - { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || - { LANGUAGE=C; export LANGUAGE; } -(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && - { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || - { LC_COLLATE=C; export LC_COLLATE; } -(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && - { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || - { LC_NUMERIC=C; export LC_NUMERIC; } -(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && - { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || - { LC_MESSAGES=C; export LC_MESSAGES; } - - -# Name of the executable. -as_me=`(basename "$0") 2>/dev/null || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conftest.sh - echo "exit 0" >>conftest.sh - chmod +x conftest.sh - if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conftest.sh -fi - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | - sed ' - N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, - t loop - s,-$,, - s,^['$as_cr_digits']*\n,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} - - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } - - -# Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -exec 6>&1 - -# -# Initializations. -# -ac_default_prefix=/usr/local -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} - -# Maximum number of lines to put in a shell here document. -# This variable seems obsolete. It should probably be removed, and -# only ac_max_sed_lines should be used. -: ${ac_max_here_lines=38} - -# Identity of this package. -PACKAGE_NAME='RT' -PACKAGE_TARNAME='rt' -PACKAGE_VERSION='3.0.9' -PACKAGE_STRING='RT 3.0.9' -PACKAGE_BUGREPORT='rt-3.0-bugs@fsck.com' - -ac_unique_file="lib/RT.pm.in" -ac_default_prefix=/opt/rt3 - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -ac_prev= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_option in - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval "enable_$ac_feature=no" ;; - - -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "enable_$ac_feature='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package| sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "with_$ac_package='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/-/_/g'` - eval "with_$ac_package=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) { echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } - ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` - eval "$ac_envvar='$ac_optarg'" - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } -fi - -# Be sure to have absolute paths. -for ac_var in exec_prefix prefix -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* | NONE | '' ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# Be sure to have absolute paths. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_confdir=`(dirname "$0") 2>/dev/null || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 - { (exit 1); exit 1; }; } - else - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } - fi -fi -srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -ac_env_build_alias_set=${build_alias+set} -ac_env_build_alias_value=$build_alias -ac_cv_env_build_alias_set=${build_alias+set} -ac_cv_env_build_alias_value=$build_alias -ac_env_host_alias_set=${host_alias+set} -ac_env_host_alias_value=$host_alias -ac_cv_env_host_alias_set=${host_alias+set} -ac_cv_env_host_alias_value=$host_alias -ac_env_target_alias_set=${target_alias+set} -ac_env_target_alias_value=$target_alias -ac_cv_env_target_alias_set=${target_alias+set} -ac_cv_env_target_alias_value=$target_alias -ac_env_PERL_set=${PERL+set} -ac_env_PERL_value=$PERL -ac_cv_env_PERL_set=${PERL+set} -ac_cv_env_PERL_value=$PERL - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures RT 3.0.9 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -_ACEOF - - cat <<_ACEOF -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data [PREFIX/share] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --infodir=DIR info documentation [PREFIX/info] - --mandir=DIR man documentation [PREFIX/man] -_ACEOF - - cat <<\_ACEOF -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of RT 3.0.9:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-layout=LAYOUT Use a specific directory layout (Default: RT3) - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-speedycgi=/path/to/speedy - path to your speedycgi binary, if it exists - --with-rt-group=GROUP group to own all files (default: rt) - --with-bin-owner=OWNER user that will own rt binaries (default root) - --with-libs-owner=OWNER user that will own RT libraries (default root) - --with-libs-group=GROUP group that will own rt binaries (default bin) - --with-db-type=TYPE sort of database RT will use (default: mysql) - (mysql, Pg, Oracle and Informix are valid) - --with-db-host=HOSTNAME FQDN of database server (default: localhost) - --with-db-port=PORT port on which the database listens on - --with-db-rt-host=HOSTNAME - FQDN of RT server which talks to the database server - (default: localhost) - --with-db-dba=DBA name of database administrator (default: root) - --with-db-database=DBNAME - name of the database to use (default: rt3) - --with-db-rt-user=DBUSER - name of database user (default: rt_user) - --with-db-rt-pass=PASSWORD - password for database user (default: rt_pass) - --with-web-user=USER user the web server runs as (default: www) - --with-web-group=GROUP group the web server runs as (default: www) - --with-my-user-group set all users and groups to current user/group - -Some influential environment variables: - PERL Perl interpreter command - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to . -_ACEOF -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - ac_popdir=`pwd` - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d $ac_dir || continue - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac -# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be -# absolute. -ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` -ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` -ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` -ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` - - cd $ac_dir - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_srcdir/configure.gnu; then - echo - $SHELL $ac_srcdir/configure.gnu --help=recursive - elif test -f $ac_srcdir/configure; then - echo - $SHELL $ac_srcdir/configure --help=recursive - elif test -f $ac_srcdir/configure.ac || - test -f $ac_srcdir/configure.in; then - echo - $ac_configure --help - else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi - cd $ac_popdir - done -fi - -test -n "$ac_init_help" && exit 0 -if $ac_init_version; then - cat <<\_ACEOF -RT configure 3.0.9 -generated by GNU Autoconf 2.53 - -Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 -Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit 0 -fi -exec 5>config.log -cat >&5 <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by RT $as_me 3.0.9, which was -generated by GNU Autoconf 2.53. Invocation command line was - - $ $0 $@ - -_ACEOF -{ -cat <<_ASUNAME -@%:@@%:@ --------- @%:@@%:@ -@%:@@%:@ Platform. @%:@@%:@ -@%:@@%:@ --------- @%:@@%:@ - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -hostinfo = `(hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" -done - -} >&5 - -cat >&5 <<_ACEOF - - -@%:@@%:@ ----------- @%:@@%:@ -@%:@@%:@ Core tests. @%:@@%:@ -@%:@@%:@ ----------- @%:@@%:@ - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Also quote any args containing shell meta-characters. -ac_configure_args= -ac_sep= -for ac_arg -do - case $ac_arg in - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n ) continue ;; - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - continue ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - ac_sep=" " ;; - esac - # Get rid of the leading space. -done - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Be sure not to use single quotes in there, as some shells, -# such as our DU 5.0 friend, will then `close' the trap. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - cat <<\_ASBOX -@%:@@%:@ ---------------- @%:@@%:@ -@%:@@%:@ Cache variables. @%:@@%:@ -@%:@@%:@ ---------------- @%:@@%:@ -_ASBOX - echo - # The following way of writing the cache mishandles newlines in values, -{ - (set) 2>&1 | - case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in - *ac_space=\ *) - sed -n \ - "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" - ;; - *) - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} - echo - if test -s confdefs.h; then - cat <<\_ASBOX -@%:@@%:@ ----------- @%:@@%:@ -@%:@@%:@ confdefs.h. @%:@@%:@ -@%:@@%:@ ----------- @%:@@%:@ -_ASBOX - echo - sed "/^$/d" confdefs.h - echo - fi - test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" - echo "$as_me: exit $exit_status" - } >&5 - rm -f core core.* *.core && - rm -rf conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status - ' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo >confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; - esac - fi -else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val="\$ac_cv_env_${ac_var}_value" - eval ac_new_val="\$ac_env_${ac_var}_value" - case $ac_old_set,$ac_new_set in - set,) - { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - - - - - - - - - - - - - - - - - -rt_version_major=3 - -rt_version_minor=0 - -rt_version_patch=9 - -test "x$rt_version_major" = 'x' && rt_version_major=0 -test "x$rt_version_minor" = 'x' && rt_version_minor=0 -test "x$rt_version_patch" = 'x' && rt_version_patch=0 - -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f $ac_dir/shtool; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 -echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} - { (exit 1); exit 1; }; } -fi -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# ./install, which can be erroneously created by make from ./install.sh. -echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 -if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in - ./ | .// | /cC/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - done - done - ;; -esac -done - - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the path is relative. - INSTALL=$ac_install_sh - fi -fi -echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6 - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - - -# Extract the first word of "perl", so it can be a program name with args. -set dummy perl; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_PERL+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $PERL in - [\\/]* | ?:[\\/]*) - ac_cv_path_PERL="$PERL" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_path_PERL" && ac_cv_path_PERL="not found" - ;; -esac -fi -PERL=$ac_cv_path_PERL - -if test -n "$PERL"; then - echo "$as_me:$LINENO: result: $PERL" >&5 -echo "${ECHO_T}$PERL" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -if test "$PERL" = 'not found'; then - { { echo "$as_me:$LINENO: error: cannot use $PACKAGE_NAME without perl" >&5 -echo "$as_me: error: cannot use $PACKAGE_NAME without perl" >&2;} - { (exit 1); exit 1; }; } -fi - -# Check whether --with-speedycgi or --without-speedycgi was given. -if test "${with_speedycgi+set}" = set; then - withval="$with_speedycgi" - SPEEDY_BIN=$withval -else - SPEEDY_BIN=/usr/local/bin/speedy -fi; - - - - - -# Check whether --enable-layout or --disable-layout was given. -if test "${enable_layout+set}" = set; then - enableval="$enable_layout" - LAYOUT=$enableval -fi; - -if test "x$LAYOUT" = "x"; then - LAYOUT="RT3" -fi - - if test ! -f $srcdir/config.layout; then - { echo "$as_me:$LINENO: WARNING: Layout file $srcdir/config.layout not found" >&5 -echo "$as_me: WARNING: Layout file $srcdir/config.layout not found" >&2;} - rt_layout_name=no - else - pldconf=./config.pld - $PERL -0777 -p -e "\$layout = '$LAYOUT';" -e ' - s/.*//gims; - s/\<\/Layout\>.*//s; - s/^#.*$//m; - s/^\s+//gim; - s/\s+$/\n/gim; - s/\+$/\/rt3/gim; - # m4 will not let us just use $srcdir/config.layout, we need @S|@1 - s/^\s*((?:bin|sbin|libexec|data|sysconf|sharedstate|localstate|lib|include|oldinclude|info|man)dir)\s*:\s*(.*)$/@S|@1=@S|@2/gim; - s/^\s*(.*?)\s*:\s*(.*)$/\(test "x\@S|@@S|@1" = "xNONE" || test "x\@S|@@S|@1" = "x") && @S|@1=@S|@2/gim; - ' < $srcdir/config.layout > $pldconf - - if test -s $pldconf; then - rt_layout_name=$LAYOUT - . $pldconf - - for var in prefix exec_prefix bindir sbindir \ - sysconfdir mandir libdir datadir htmldir \ - localstatedir logfiledir masonstatedir \ - sessionstatedir customdir custometcdir customhtmldir \ - customlexdir customlibdir manualdir; do - eval "val=\"\$$var\"" - val=`echo $val | sed -e 's:\(.\)/*$:\1:'` - val=`echo $val | - sed -e 's:[\$]\([a-z_]*\):$\1:g'` - eval "$var='$val'" - done - - else - rt_layout_name=no - fi - #rm $pldconf - fi - - - ap_last='' - ap_cur='$prefix' - while test "x${ap_cur}" != "x${ap_last}"; do - ap_last="${ap_cur}" - ap_cur=`eval "echo ${ap_cur}"` - done - exp_prefix="${ap_cur}" - - - - - - - ap_last='' - ap_cur='$exec_prefix' - while test "x${ap_cur}" != "x${ap_last}"; do - ap_last="${ap_cur}" - ap_cur=`eval "echo ${ap_cur}"` - done - exp_exec_prefix="${ap_cur}" - - - - - - - ap_last='' - ap_cur='$bindir' - while test "x${ap_cur}" != "x${ap_last}"; do - ap_last="${ap_cur}" - ap_cur=`eval "echo ${ap_cur}"` - done - exp_bindir="${ap_cur}" - - - - - - - ap_last='' - ap_cur='$sbindir' - while test "x${ap_cur}" != "x${ap_last}"; do - ap_last="${ap_cur}" - ap_cur=`eval "echo ${ap_cur}"` - done - exp_sbindir="${ap_cur}" - - - - - - - ap_last='' - ap_cur='$sysconfdir' - while test "x${ap_cur}" != "x${ap_last}"; do - ap_last="${ap_cur}" - ap_cur=`eval "echo ${ap_cur}"` - done - exp_sysconfdir="${ap_cur}" - - - - - - - ap_last='' - ap_cur='$mandir' - while test "x${ap_cur}" != "x${ap_last}"; do - ap_last="${ap_cur}" - ap_cur=`eval "echo ${ap_cur}"` - done - exp_mandir="${ap_cur}" - - - - - - - ap_last='' - ap_cur='$libdir' - while test "x${ap_cur}" != "x${ap_last}"; do - ap_last="${ap_cur}" - ap_cur=`eval "echo ${ap_cur}"` - done - exp_libdir="${ap_cur}" - - - - - - - ap_last='' - ap_cur='$datadir' - while test "x${ap_cur}" != "x${ap_last}"; do - ap_last="${ap_cur}" - ap_cur=`eval "echo ${ap_cur}"` - done - exp_datadir="${ap_cur}" - - - - - - - ap_last='' - ap_cur='$htmldir' - while test "x${ap_cur}" != "x${ap_last}"; do - ap_last="${ap_cur}" - ap_cur=`eval "echo ${ap_cur}"` - done - exp_htmldir="${ap_cur}" - - - - - - - ap_last='' - ap_cur='$manualdir' - while test "x${ap_cur}" != "x${ap_last}"; do - ap_last="${ap_cur}" - ap_cur=`eval "echo ${ap_cur}"` - done - exp_manualdir="${ap_cur}" - - - - - - - ap_last='' - ap_cur='$localstatedir' - while test "x${ap_cur}" != "x${ap_last}"; do - ap_last="${ap_cur}" - ap_cur=`eval "echo ${ap_cur}"` - done - exp_localstatedir="${ap_cur}" - - - - - - - ap_last='' - ap_cur='$logfiledir' - while test "x${ap_cur}" != "x${ap_last}"; do - ap_last="${ap_cur}" - ap_cur=`eval "echo ${ap_cur}"` - done - exp_logfiledir="${ap_cur}" - - - - - - - ap_last='' - ap_cur='$masonstatedir' - while test "x${ap_cur}" != "x${ap_last}"; do - ap_last="${ap_cur}" - ap_cur=`eval "echo ${ap_cur}"` - done - exp_masonstatedir="${ap_cur}" - - - - - - - ap_last='' - ap_cur='$sessionstatedir' - while test "x${ap_cur}" != "x${ap_last}"; do - ap_last="${ap_cur}" - ap_cur=`eval "echo ${ap_cur}"` - done - exp_sessionstatedir="${ap_cur}" - - - - - - - ap_last='' - ap_cur='$customdir' - while test "x${ap_cur}" != "x${ap_last}"; do - ap_last="${ap_cur}" - ap_cur=`eval "echo ${ap_cur}"` - done - exp_customdir="${ap_cur}" - - - - - - - ap_last='' - ap_cur='$custometcdir' - while test "x${ap_cur}" != "x${ap_last}"; do - ap_last="${ap_cur}" - ap_cur=`eval "echo ${ap_cur}"` - done - exp_custometcdir="${ap_cur}" - - - - - - - ap_last='' - ap_cur='$customhtmldir' - while test "x${ap_cur}" != "x${ap_last}"; do - ap_last="${ap_cur}" - ap_cur=`eval "echo ${ap_cur}"` - done - exp_customhtmldir="${ap_cur}" - - - - - - - ap_last='' - ap_cur='$customlexdir' - while test "x${ap_cur}" != "x${ap_last}"; do - ap_last="${ap_cur}" - ap_cur=`eval "echo ${ap_cur}"` - done - exp_customlexdir="${ap_cur}" - - - - - - - ap_last='' - ap_cur='$customlibdir' - while test "x${ap_cur}" != "x${ap_last}"; do - ap_last="${ap_cur}" - ap_cur=`eval "echo ${ap_cur}"` - done - exp_customlibdir="${ap_cur}" - - - - - -echo "$as_me:$LINENO: checking for chosen layout" >&5 -echo $ECHO_N "checking for chosen layout... $ECHO_C" >&6 -if test "x$rt_layout_name" = "xno"; then - if test "x$LAYOUT" = "xno"; then - echo "$as_me:$LINENO: result: none" >&5 -echo "${ECHO_T}none" >&6 - else - echo "$as_me:$LINENO: result: $LAYOUT" >&5 -echo "${ECHO_T}$LAYOUT" >&6 - fi - { { echo "$as_me:$LINENO: error: a valid layout must be specified (or the default used)" >&5 -echo "$as_me: error: a valid layout must be specified (or the default used)" >&2;} - { (exit 1); exit 1; }; } -else - - echo "$as_me:$LINENO: result: $rt_layout_name" >&5 -echo "${ECHO_T}$rt_layout_name" >&6 -fi - - - -# Check whether --with-rt-group or --without-rt-group was given. -if test "${with_rt_group+set}" = set; then - withval="$with_rt_group" - RTGROUP=$withval -else - RTGROUP=rt -fi; - - - -# Check whether --with-bin-owner or --without-bin-owner was given. -if test "${with_bin_owner+set}" = set; then - withval="$with_bin_owner" - BIN_OWNER=$withval -else - BIN_OWNER=root -fi; - - - -# Check whether --with-libs-owner or --without-libs-owner was given. -if test "${with_libs_owner+set}" = set; then - withval="$with_libs_owner" - LIBS_OWNER=$withval -else - LIBS_OWNER=root -fi; - - - -# Check whether --with-libs-group or --without-libs-group was given. -if test "${with_libs_group+set}" = set; then - withval="$with_libs_group" - LIBS_GROUP=$withval -else - LIBS_GROUP=bin -fi; - - - -# Check whether --with-db-type or --without-db-type was given. -if test "${with_db_type+set}" = set; then - withval="$with_db_type" - DB_TYPE=$withval -else - DB_TYPE=mysql -fi; -if test "$DB_TYPE" != 'mysql' -a "$DB_TYPE" != 'Pg' -a "$DB_TYPE" != 'SQLite' -a "$DB_TYPE" != 'Oracle' -a "$DB_TYPE" != 'Informix' ; then - { { echo "$as_me:$LINENO: error: Only Oracle, Informix, Pg and mysql are valid db types" >&5 -echo "$as_me: error: Only Oracle, Informix, Pg and mysql are valid db types" >&2;} - { (exit 1); exit 1; }; } -fi - - -if test "$DB_TYPE" = 'Oracle'; then - test "x$ORACLE_HOME" = 'x' && { { echo "$as_me:$LINENO: error: Please declare the ORACLE_HOME environment variable" >&5 -echo "$as_me: error: Please declare the ORACLE_HOME environment variable" >&2;} - { (exit 1); exit 1; }; } - ORACLE_ENV_PREF="\$ENV{'ORACLE_HOME'} = '$ORACLE_HOME';" -fi - - - -# Check whether --with-db-host or --without-db-host was given. -if test "${with_db_host+set}" = set; then - withval="$with_db_host" - DB_HOST=$withval -else - DB_HOST=localhost -fi; - - - -# Check whether --with-db-port or --without-db-port was given. -if test "${with_db_port+set}" = set; then - withval="$with_db_port" - DB_PORT=$withval -else - DB_PORT= -fi; - - - -# Check whether --with-db-rt-host or --without-db-rt-host was given. -if test "${with_db_rt_host+set}" = set; then - withval="$with_db_rt_host" - DB_RT_HOST=$withval -else - DB_RT_HOST=localhost -fi; - - - -# Check whether --with-db-dba or --without-db-dba was given. -if test "${with_db_dba+set}" = set; then - withval="$with_db_dba" - DB_DBA=$withval -else - DB_DBA=root -fi; - - - -# Check whether --with-db-database or --without-db-database was given. -if test "${with_db_database+set}" = set; then - withval="$with_db_database" - DB_DATABASE=$withval -else - DB_DATABASE=rt3 -fi; - - - -# Check whether --with-db-rt-user or --without-db-rt-user was given. -if test "${with_db_rt_user+set}" = set; then - withval="$with_db_rt_user" - DB_RT_USER=$withval -else - DB_RT_USER=rt_user -fi; - - - -# Check whether --with-db-rt-pass or --without-db-rt-pass was given. -if test "${with_db_rt_pass+set}" = set; then - withval="$with_db_rt_pass" - DB_RT_PASS=$withval -else - DB_RT_PASS=rt_pass -fi; - - - -# Check whether --with-web-user or --without-web-user was given. -if test "${with_web_user+set}" = set; then - withval="$with_web_user" - WEB_USER=$withval -else - WEB_USER=www -fi; - - - -# Check whether --with-web-group or --without-web-group was given. -if test "${with_web_group+set}" = set; then - withval="$with_web_group" - WEB_GROUP=$withval -else - WEB_GROUP=www -fi; - - -my_group=$(groups|cut -f1 -d' ') - -# Check whether --with-my-user-group or --without-my-user-group was given. -if test "${with_my_user_group+set}" = set; then - withval="$with_my_user_group" - RTGROUP=$my_group - BIN_OWNER=$USER - LIBS_OWNER=$USER - LIBS_GROUP=$my_group - WEB_USER=$USER - WEB_GROUP=$my_group -fi; - - -RT_VERSION_MAJOR=${rt_version_major} - -RT_VERSION_MINOR=${rt_version_minor} - -RT_VERSION_PATCH=${rt_version_patch} - - -RT_PATH=${exp_prefix} - -RT_DOC_PATH=${exp_manualdir} - -RT_LOCAL_PATH=${exp_customdir} - -RT_LIB_PATH=${exp_libdir} - -RT_ETC_PATH=${exp_sysconfdir} - -CONFIG_FILE_PATH=${exp_sysconfdir} - -RT_BIN_PATH=${exp_bindir} - -RT_SBIN_PATH=${exp_sbindir} - -RT_VAR_PATH=${exp_localstatedir} - -RT_MAN_PATH=${exp_mandir} - -MASON_DATA_PATH=${exp_masonstatedir} - -MASON_SESSION_PATH=${exp_sessionstatedir} - -MASON_HTML_PATH=${exp_htmldir} - -LOCAL_ETC_PATH=${exp_custometcdir} - -MASON_LOCAL_HTML_PATH=${exp_customhtmldir} - -LOCAL_LEXICON_PATH=${exp_customlexdir} - -LOCAL_LIB_PATH=${exp_customlibdir} - -DESTDIR=${exp_prefix} - -RT_LOG_PATH=${exp_logfiledir} - - - -ac_config_files="$ac_config_files sbin/rt-setup-database sbin/rt-test-dependencies Makefile etc/RT_Config.pm lib/RT.pm lib/t/00smoke.t lib/t/01harness.t lib/t/02regression.t lib/t/03web.pl lib/t/04_send_email.pl bin/mason_handler.fcgi bin/mason_handler.scgi bin/mason_handler.svc bin/rt-commit-handler bin/rt-crontool bin/rt-mailgate bin/rt bin/webmux.pl" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overriden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -{ - (set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} | - sed ' - t clear - : clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache -if cmp -s $cache_file confcache; then :; else - if test -w $cache_file; then - test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" - cat confcache >$cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -}' -fi - -# Transform confdefs.h into DEFS. -# Protect against shell expansion while executing Makefile rules. -# Protect against Makefile macro expansion. -# -# If the first sed substitution is executed (which looks for macros that -# take arguments), then we branch to the quote section. Otherwise, -# look for a macro that doesn't take arguments. -cat >confdef2opt.sed <<\_ACEOF -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g -t quote -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g -t quote -d -: quote -s,[ `~#$^&*(){}\\|;'"<>?],\\&,g -s,\[,\\&,g -s,\],\\&,g -s,\$,$$,g -p -_ACEOF -# We use echo to avoid assuming a particular line-breaking character. -# The extra dot is to prevent the shell from consuming trailing -# line-breaks from the sub-command output. A line-break within -# single-quotes doesn't work because, if this script is created in a -# platform that uses two characters for line-breaks (e.g., DOS), tr -# would break. -ac_LF_and_DOT=`echo; echo .` -DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` -rm -f confdef2opt.sed - - - -: ${CONFIG_STATUS=./config.status} -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -SHELL=\${CONFIG_SHELL-$SHELL} -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF - -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi - -# NLS nuisances. -# Support unset when possible. -if (FOO=FOO; unset FOO) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - -(set +x; test -n "`(LANG=C; export LANG) 2>&1`") && - { $as_unset LANG || test "${LANG+set}" != set; } || - { LANG=C; export LANG; } -(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && - { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || - { LC_ALL=C; export LC_ALL; } -(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && - { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || - { LC_TIME=C; export LC_TIME; } -(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && - { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || - { LC_CTYPE=C; export LC_CTYPE; } -(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && - { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || - { LANGUAGE=C; export LANGUAGE; } -(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && - { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || - { LC_COLLATE=C; export LC_COLLATE; } -(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && - { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || - { LC_NUMERIC=C; export LC_NUMERIC; } -(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && - { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || - { LC_MESSAGES=C; export LC_MESSAGES; } - - -# Name of the executable. -as_me=`(basename "$0") 2>/dev/null || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conftest.sh - echo "exit 0" >>conftest.sh - chmod +x conftest.sh - if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conftest.sh -fi - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 -echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | - sed ' - N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, - t loop - s,-$,, - s,^['$as_cr_digits']*\n,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 -echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} - - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } - -exec 6>&1 - -# Open the log real soon, to keep \$[0] and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. Logging --version etc. is OK. -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX -@%:@@%:@ Running $as_me. @%:@@%:@ -_ASBOX -} >&5 -cat >&5 <<_CSEOF - -This file was extended by RT $as_me 3.0.9, which was -generated by GNU Autoconf 2.53. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -_CSEOF -echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 -echo >&5 -_ACEOF - -# Files that config.status was made for. -if test -n "$ac_config_files"; then - echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_headers"; then - echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_links"; then - echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_commands"; then - echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS -fi - -cat >>$CONFIG_STATUS <<\_ACEOF - -ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. - -Usage: $0 [OPTIONS] [FILE]... - - -h, --help print this help, then exit - -V, --version print version number, then exit - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - -Configuration files: -$config_files - -Report bugs to ." -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF -ac_cs_version="\\ -RT config.status 3.0.9 -configured by $0, generated by GNU Autoconf 2.53, - with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" - -Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." -srcdir=$srcdir -INSTALL="$INSTALL" -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` - shift - set dummy "$ac_option" "$ac_optarg" ${1+"$@"} - shift - ;; - -*);; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_need_defaults=false;; - esac - - case $1 in - # Handling of the options. -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion" - exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;; -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:$LINENO: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - shift - CONFIG_FILES="$CONFIG_FILES $1" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - shift - CONFIG_HEADERS="$CONFIG_HEADERS $1" - ac_need_defaults=false;; - - # This is an error. - -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; } ;; - - *) ac_config_targets="$ac_config_targets $1" ;; - - esac - shift -done - -_ACEOF - - - - - -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_config_target in $ac_config_targets -do - case "$ac_config_target" in - # Handling of arguments. - "sbin/rt-setup-database" ) CONFIG_FILES="$CONFIG_FILES sbin/rt-setup-database" ;; - "sbin/rt-test-dependencies" ) CONFIG_FILES="$CONFIG_FILES sbin/rt-test-dependencies" ;; - "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "etc/RT_Config.pm" ) CONFIG_FILES="$CONFIG_FILES etc/RT_Config.pm" ;; - "lib/RT.pm" ) CONFIG_FILES="$CONFIG_FILES lib/RT.pm" ;; - "lib/t/00smoke.t" ) CONFIG_FILES="$CONFIG_FILES lib/t/00smoke.t" ;; - "lib/t/01harness.t" ) CONFIG_FILES="$CONFIG_FILES lib/t/01harness.t" ;; - "lib/t/02regression.t" ) CONFIG_FILES="$CONFIG_FILES lib/t/02regression.t" ;; - "lib/t/03web.pl" ) CONFIG_FILES="$CONFIG_FILES lib/t/03web.pl" ;; - "lib/t/04_send_email.pl" ) CONFIG_FILES="$CONFIG_FILES lib/t/04_send_email.pl" ;; - "bin/mason_handler.fcgi" ) CONFIG_FILES="$CONFIG_FILES bin/mason_handler.fcgi" ;; - "bin/mason_handler.scgi" ) CONFIG_FILES="$CONFIG_FILES bin/mason_handler.scgi" ;; - "bin/mason_handler.svc" ) CONFIG_FILES="$CONFIG_FILES bin/mason_handler.svc" ;; - "bin/rt-commit-handler" ) CONFIG_FILES="$CONFIG_FILES bin/rt-commit-handler" ;; - "bin/rt-crontool" ) CONFIG_FILES="$CONFIG_FILES bin/rt-crontool" ;; - "bin/rt-mailgate" ) CONFIG_FILES="$CONFIG_FILES bin/rt-mailgate" ;; - "bin/rt" ) CONFIG_FILES="$CONFIG_FILES bin/rt" ;; - "bin/webmux.pl" ) CONFIG_FILES="$CONFIG_FILES bin/webmux.pl" ;; - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; - esac -done - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files -fi - -# Create a temporary directory, and hook for its removal unless debugging. -$debug || -{ - trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 -} - -# Create a (secure) tmp directory for tmp files. -: ${TMPDIR=/tmp} -{ - tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=$TMPDIR/cs$$-$RANDOM - (umask 077 && mkdir $tmp) -} || -{ - echo "$me: cannot create a temporary directory in $TMPDIR" >&2 - { (exit 1); exit 1; } -} - -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF - -# -# CONFIG_FILES section. -# - -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h -if test -n "\$CONFIG_FILES"; then - # Protect against being on the right side of a sed subst in config.status. - sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; - s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF -s,@SHELL@,$SHELL,;t t -s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t -s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t -s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t -s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t -s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t -s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t -s,@exec_prefix@,$exec_prefix,;t t -s,@prefix@,$prefix,;t t -s,@program_transform_name@,$program_transform_name,;t t -s,@bindir@,$bindir,;t t -s,@sbindir@,$sbindir,;t t -s,@libexecdir@,$libexecdir,;t t -s,@datadir@,$datadir,;t t -s,@sysconfdir@,$sysconfdir,;t t -s,@sharedstatedir@,$sharedstatedir,;t t -s,@localstatedir@,$localstatedir,;t t -s,@libdir@,$libdir,;t t -s,@includedir@,$includedir,;t t -s,@oldincludedir@,$oldincludedir,;t t -s,@infodir@,$infodir,;t t -s,@mandir@,$mandir,;t t -s,@build_alias@,$build_alias,;t t -s,@host_alias@,$host_alias,;t t -s,@target_alias@,$target_alias,;t t -s,@DEFS@,$DEFS,;t t -s,@ECHO_C@,$ECHO_C,;t t -s,@ECHO_N@,$ECHO_N,;t t -s,@ECHO_T@,$ECHO_T,;t t -s,@LIBS@,$LIBS,;t t -s,@rt_version_major@,$rt_version_major,;t t -s,@rt_version_minor@,$rt_version_minor,;t t -s,@rt_version_patch@,$rt_version_patch,;t t -s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t -s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t -s,@INSTALL_DATA@,$INSTALL_DATA,;t t -s,@PERL@,$PERL,;t t -s,@SPEEDY_BIN@,$SPEEDY_BIN,;t t -s,@exp_prefix@,$exp_prefix,;t t -s,@exp_exec_prefix@,$exp_exec_prefix,;t t -s,@exp_bindir@,$exp_bindir,;t t -s,@exp_sbindir@,$exp_sbindir,;t t -s,@exp_sysconfdir@,$exp_sysconfdir,;t t -s,@exp_mandir@,$exp_mandir,;t t -s,@exp_libdir@,$exp_libdir,;t t -s,@exp_datadir@,$exp_datadir,;t t -s,@htmldir@,$htmldir,;t t -s,@exp_htmldir@,$exp_htmldir,;t t -s,@manualdir@,$manualdir,;t t -s,@exp_manualdir@,$exp_manualdir,;t t -s,@exp_localstatedir@,$exp_localstatedir,;t t -s,@logfiledir@,$logfiledir,;t t -s,@exp_logfiledir@,$exp_logfiledir,;t t -s,@masonstatedir@,$masonstatedir,;t t -s,@exp_masonstatedir@,$exp_masonstatedir,;t t -s,@sessionstatedir@,$sessionstatedir,;t t -s,@exp_sessionstatedir@,$exp_sessionstatedir,;t t -s,@customdir@,$customdir,;t t -s,@exp_customdir@,$exp_customdir,;t t -s,@custometcdir@,$custometcdir,;t t -s,@exp_custometcdir@,$exp_custometcdir,;t t -s,@customhtmldir@,$customhtmldir,;t t -s,@exp_customhtmldir@,$exp_customhtmldir,;t t -s,@customlexdir@,$customlexdir,;t t -s,@exp_customlexdir@,$exp_customlexdir,;t t -s,@customlibdir@,$customlibdir,;t t -s,@exp_customlibdir@,$exp_customlibdir,;t t -s,@rt_layout_name@,$rt_layout_name,;t t -s,@RTGROUP@,$RTGROUP,;t t -s,@BIN_OWNER@,$BIN_OWNER,;t t -s,@LIBS_OWNER@,$LIBS_OWNER,;t t -s,@LIBS_GROUP@,$LIBS_GROUP,;t t -s,@DB_TYPE@,$DB_TYPE,;t t -s,@ORACLE_ENV_PREF@,$ORACLE_ENV_PREF,;t t -s,@DB_HOST@,$DB_HOST,;t t -s,@DB_PORT@,$DB_PORT,;t t -s,@DB_RT_HOST@,$DB_RT_HOST,;t t -s,@DB_DBA@,$DB_DBA,;t t -s,@DB_DATABASE@,$DB_DATABASE,;t t -s,@DB_RT_USER@,$DB_RT_USER,;t t -s,@DB_RT_PASS@,$DB_RT_PASS,;t t -s,@WEB_USER@,$WEB_USER,;t t -s,@WEB_GROUP@,$WEB_GROUP,;t t -s,@RT_VERSION_MAJOR@,$RT_VERSION_MAJOR,;t t -s,@RT_VERSION_MINOR@,$RT_VERSION_MINOR,;t t -s,@RT_VERSION_PATCH@,$RT_VERSION_PATCH,;t t -s,@RT_PATH@,$RT_PATH,;t t -s,@RT_DOC_PATH@,$RT_DOC_PATH,;t t -s,@RT_LOCAL_PATH@,$RT_LOCAL_PATH,;t t -s,@RT_LIB_PATH@,$RT_LIB_PATH,;t t -s,@RT_ETC_PATH@,$RT_ETC_PATH,;t t -s,@CONFIG_FILE_PATH@,$CONFIG_FILE_PATH,;t t -s,@RT_BIN_PATH@,$RT_BIN_PATH,;t t -s,@RT_SBIN_PATH@,$RT_SBIN_PATH,;t t -s,@RT_VAR_PATH@,$RT_VAR_PATH,;t t -s,@RT_MAN_PATH@,$RT_MAN_PATH,;t t -s,@MASON_DATA_PATH@,$MASON_DATA_PATH,;t t -s,@MASON_SESSION_PATH@,$MASON_SESSION_PATH,;t t -s,@MASON_HTML_PATH@,$MASON_HTML_PATH,;t t -s,@LOCAL_ETC_PATH@,$LOCAL_ETC_PATH,;t t -s,@MASON_LOCAL_HTML_PATH@,$MASON_LOCAL_HTML_PATH,;t t -s,@LOCAL_LEXICON_PATH@,$LOCAL_LEXICON_PATH,;t t -s,@LOCAL_LIB_PATH@,$LOCAL_LIB_PATH,;t t -s,@DESTDIR@,$DESTDIR,;t t -s,@RT_LOG_PATH@,$RT_LOG_PATH,;t t -CEOF - -_ACEOF - - cat >>$CONFIG_STATUS <<\_ACEOF - # Split the substitutions into bite-sized pieces for seds with - # small command number limits, like on Digital OSF/1 and HP-UX. - ac_max_sed_lines=48 - ac_sed_frag=1 # Number of current file. - ac_beg=1 # First line for current file. - ac_end=$ac_max_sed_lines # Line after last line for current file. - ac_more_lines=: - ac_sed_cmds= - while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - else - sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - fi - if test ! -s $tmp/subs.frag; then - ac_more_lines=false - else - # The purpose of the label and of the branching condition is to - # speed up the sed processing (if there are no `@' at all, there - # is no need to browse any of the substitutions). - # These are the two extra sed commands mentioned above. - (echo ':t - /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" - else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" - fi - ac_sed_frag=`expr $ac_sed_frag + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_lines` - fi - done - if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat - fi -fi # test -n "$CONFIG_FILES" - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { case "$ac_dir" in - [\\/]* | ?:[\\/]* ) as_incr_dir=;; - *) as_incr_dir=.;; -esac -as_dummy="$ac_dir" -for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do - case $as_mkdir_dir in - # Skip DOS drivespec - ?:) as_incr_dir=$as_mkdir_dir ;; - *) - as_incr_dir=$as_incr_dir/$as_mkdir_dir - test -d "$as_incr_dir" || - mkdir "$as_incr_dir" || - { { echo "$as_me:$LINENO: error: cannot create \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; } - ;; - esac -done; } - - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac -# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be -# absolute. -ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` -ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` -ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` -ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` - - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_builddir$INSTALL ;; - esac - - if test x"$ac_file" != x-; then - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - configure_input= - else - configure_input="$ac_file. " - fi - configure_input=$configure_input"Generated from `echo $ac_file_in | - sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo $f;; - *) # Relative - if test -f "$f"; then - # Build tree - echo $f - elif test -f "$srcdir/$f"; then - # Source tree - echo $srcdir/$f - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s,@configure_input@,$configure_input,;t t -s,@srcdir@,$ac_srcdir,;t t -s,@abs_srcdir@,$ac_abs_srcdir,;t t -s,@top_srcdir@,$ac_top_srcdir,;t t -s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t -s,@builddir@,$ac_builddir,;t t -s,@abs_builddir@,$ac_abs_builddir,;t t -s,@top_builddir@,$ac_top_builddir,;t t -s,@abs_top_builddir@,$ac_abs_top_builddir,;t t -s,@INSTALL@,$ac_INSTALL,;t t -" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out - rm -f $tmp/stdin - if test x"$ac_file" != x-; then - mv $tmp/out $ac_file - else - cat $tmp/out - rm -f $tmp/out - fi - -done -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF - -{ (exit 0); exit 0; } -_ACEOF -chmod +x $CONFIG_STATUS -ac_clean_files=$ac_clean_files_save - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - exec 5>/dev/null - $SHELL $CONFIG_STATUS || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || { (exit 1); exit 1; } -fi - diff --git a/rt/autom4te.cache/requests b/rt/autom4te.cache/requests deleted file mode 100644 index fad7b54f5..000000000 --- a/rt/autom4te.cache/requests +++ /dev/null @@ -1,94 +0,0 @@ -# This file was created by autom4te. -# It contains the lists of macros which have been traced. -# It can be safely removed. - -@request = ( - bless( [ - '0', - 1, - [ - '/usr/share/autoconf' - ], - [ - '--reload-state=/usr/share/autoconf/autoconf/autoconf.m4f', - 'aclocal.m4', - 'configure.ac' - ], - { - 'AC_HEADER_STAT' => 1, - 'AC_FUNC_STRFTIME' => 1, - 'AC_PROG_RANLIB' => 1, - 'AC_FUNC_WAIT3' => 1, - 'AC_FUNC_SETPGRP' => 1, - 'AC_HEADER_TIME' => 1, - 'AC_FUNC_SETVBUF_REVERSED' => 1, - 'AC_HEADER_SYS_WAIT' => 1, - 'AC_TYPE_UID_T' => 1, - 'AM_CONDITIONAL' => 1, - 'AC_CHECK_LIB' => 1, - 'AC_PROG_LN_S' => 1, - 'AC_FUNC_MEMCMP' => 1, - 'AC_FUNC_FORK' => 1, - 'AC_FUNC_GETGROUPS' => 1, - 'AC_HEADER_MAJOR' => 1, - 'AC_FUNC_STRTOD' => 1, - 'AC_HEADER_DIRENT' => 1, - 'AC_FUNC_UTIME_NULL' => 1, - 'AC_CONFIG_FILES' => 1, - 'AC_FUNC_ALLOCA' => 1, - 'AC_C_CONST' => 1, - 'include' => 1, - 'AC_FUNC_OBSTACK' => 1, - 'AC_FUNC_LSTAT' => 1, - 'AC_STRUCT_TIMEZONE' => 1, - 'AC_FUNC_GETPGRP' => 1, - 'AC_DEFINE_TRACE_LITERAL' => 1, - 'AC_CHECK_HEADERS' => 1, - 'AC_TYPE_MODE_T' => 1, - 'AC_CHECK_TYPES' => 1, - 'AC_PROG_YACC' => 1, - 'AC_TYPE_PID_T' => 1, - 'AC_FUNC_STRERROR_R' => 1, - 'AC_STRUCT_ST_BLOCKS' => 1, - 'AC_PROG_GCC_TRADITIONAL' => 1, - 'AC_TYPE_SIGNAL' => 1, - 'AC_FUNC_FNMATCH' => 1, - 'AC_PROG_CPP' => 1, - 'AM_PROG_LIBTOOL' => 1, - 'AC_FUNC_STAT' => 1, - 'AC_PROG_INSTALL' => 1, - 'AM_GNU_GETTEXT' => 1, - 'AC_FUNC_STRCOLL' => 1, - 'AC_LIBSOURCE' => 1, - 'AC_C_INLINE' => 1, - 'AC_FUNC_CHOWN' => 1, - 'AC_PROG_LEX' => 1, - 'AH_OUTPUT' => 1, - 'AC_HEADER_STDC' => 1, - 'AC_FUNC_GETLOADAVG' => 1, - 'AC_CHECK_FUNCS' => 1, - 'AC_TYPE_SIZE_T' => 1, - 'AC_DECL_SYS_SIGLIST' => 1, - 'AC_FUNC_MKTIME' => 1, - 'AC_PROG_MAKE_SET' => 1, - 'AC_PROG_CXX' => 1, - 'm4_pattern_allow' => 1, - 'm4_include' => 1, - 'm4_pattern_forbid' => 1, - 'AC_PROG_AWK' => 1, - 'AC_FUNC_VPRINTF' => 1, - 'AC_CONFIG_HEADERS' => 1, - 'AC_PATH_X' => 1, - 'AC_TYPE_OFF_T' => 1, - 'AC_FUNC_MALLOC' => 1, - 'AC_FUNC_ERROR_AT_LINE' => 1, - 'AC_FUNC_FSEEKO' => 1, - 'AC_FUNC_MMAP' => 1, - 'AC_STRUCT_TM' => 1, - 'AC_SUBST' => 1, - 'AC_PROG_CC' => 1, - 'AC_PROG_LIBTOOL' => 1 - } - ], 'Request' ) - ); - diff --git a/rt/autom4te.cache/traces.0 b/rt/autom4te.cache/traces.0 deleted file mode 100644 index f13276211..000000000 --- a/rt/autom4te.cache/traces.0 +++ /dev/null @@ -1,158 +0,0 @@ -m4trace:configure.ac:9: -1- m4_pattern_forbid([^_?A[CHUM]_]) -m4trace:configure.ac:9: -1- m4_pattern_forbid([_AC_]) -m4trace:configure.ac:9: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs. LIBOBJS']) -m4trace:configure.ac:9: -1- m4_pattern_allow([^AS_FLAGS$]) -m4trace:configure.ac:9: -1- m4_pattern_forbid([^_?m4_]) -m4trace:configure.ac:9: -1- m4_pattern_forbid([^dnl$]) -m4trace:configure.ac:9: -1- m4_pattern_forbid([^_?AS_]) -m4trace:configure.ac:9: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}]) -m4trace:configure.ac:9: -1- AC_SUBST([PATH_SEPARATOR]) -m4trace:configure.ac:9: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) -m4trace:configure.ac:9: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) -m4trace:configure.ac:9: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) -m4trace:configure.ac:9: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) -m4trace:configure.ac:9: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) -m4trace:configure.ac:9: -1- AC_SUBST([exec_prefix], [NONE]) -m4trace:configure.ac:9: -1- AC_SUBST([prefix], [NONE]) -m4trace:configure.ac:9: -1- AC_SUBST([program_transform_name], [s,x,x,]) -m4trace:configure.ac:9: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) -m4trace:configure.ac:9: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) -m4trace:configure.ac:9: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) -m4trace:configure.ac:9: -1- AC_SUBST([datadir], ['${prefix}/share']) -m4trace:configure.ac:9: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) -m4trace:configure.ac:9: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) -m4trace:configure.ac:9: -1- AC_SUBST([localstatedir], ['${prefix}/var']) -m4trace:configure.ac:9: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) -m4trace:configure.ac:9: -1- AC_SUBST([includedir], ['${prefix}/include']) -m4trace:configure.ac:9: -1- AC_SUBST([oldincludedir], ['/usr/include']) -m4trace:configure.ac:9: -1- AC_SUBST([infodir], ['${prefix}/info']) -m4trace:configure.ac:9: -1- AC_SUBST([mandir], ['${prefix}/man']) -m4trace:configure.ac:9: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) -m4trace:configure.ac:9: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ -#undef PACKAGE_NAME]) -m4trace:configure.ac:9: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) -m4trace:configure.ac:9: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME]) -m4trace:configure.ac:9: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) -m4trace:configure.ac:9: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ -#undef PACKAGE_VERSION]) -m4trace:configure.ac:9: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) -m4trace:configure.ac:9: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING]) -m4trace:configure.ac:9: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) -m4trace:configure.ac:9: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT]) -m4trace:configure.ac:9: -1- AC_SUBST([build_alias]) -m4trace:configure.ac:9: -1- AC_SUBST([host_alias]) -m4trace:configure.ac:9: -1- AC_SUBST([target_alias]) -m4trace:configure.ac:9: -1- AC_SUBST([DEFS]) -m4trace:configure.ac:9: -1- AC_SUBST([ECHO_C]) -m4trace:configure.ac:9: -1- AC_SUBST([ECHO_N]) -m4trace:configure.ac:9: -1- AC_SUBST([ECHO_T]) -m4trace:configure.ac:9: -1- AC_SUBST([LIBS]) -m4trace:configure.ac:14: -1- AC_SUBST([rt_version_major], [3]) -m4trace:configure.ac:16: -1- AC_SUBST([rt_version_minor], [0]) -m4trace:configure.ac:18: -1- AC_SUBST([rt_version_patch], [9]) -m4trace:configure.ac:24: -1- AC_PROG_INSTALL -m4trace:configure.ac:24: -1- AC_SUBST([INSTALL_PROGRAM]) -m4trace:configure.ac:24: -1- AC_SUBST([INSTALL_SCRIPT]) -m4trace:configure.ac:24: -1- AC_SUBST([INSTALL_DATA]) -m4trace:configure.ac:25: -1- AC_SUBST([PERL]) -m4trace:configure.ac:26: -1- AC_SUBST([PERL], [$ac_cv_path_PERL]) -m4trace:configure.ac:36: -1- AC_SUBST([SPEEDY_BIN]) -m4trace:configure.ac:41: -1- AC_SUBST([prefix]) -m4trace:configure.ac:41: -1- AC_SUBST([exp_prefix]) -m4trace:configure.ac:41: -1- AC_SUBST([exec_prefix]) -m4trace:configure.ac:41: -1- AC_SUBST([exp_exec_prefix]) -m4trace:configure.ac:41: -1- AC_SUBST([bindir]) -m4trace:configure.ac:41: -1- AC_SUBST([exp_bindir]) -m4trace:configure.ac:41: -1- AC_SUBST([sbindir]) -m4trace:configure.ac:41: -1- AC_SUBST([exp_sbindir]) -m4trace:configure.ac:41: -1- AC_SUBST([sysconfdir]) -m4trace:configure.ac:41: -1- AC_SUBST([exp_sysconfdir]) -m4trace:configure.ac:41: -1- AC_SUBST([mandir]) -m4trace:configure.ac:41: -1- AC_SUBST([exp_mandir]) -m4trace:configure.ac:41: -1- AC_SUBST([libdir]) -m4trace:configure.ac:41: -1- AC_SUBST([exp_libdir]) -m4trace:configure.ac:41: -1- AC_SUBST([datadir]) -m4trace:configure.ac:41: -1- AC_SUBST([exp_datadir]) -m4trace:configure.ac:41: -1- AC_SUBST([htmldir]) -m4trace:configure.ac:41: -1- AC_SUBST([exp_htmldir]) -m4trace:configure.ac:41: -1- AC_SUBST([manualdir]) -m4trace:configure.ac:41: -1- AC_SUBST([exp_manualdir]) -m4trace:configure.ac:41: -1- AC_SUBST([localstatedir]) -m4trace:configure.ac:41: -1- AC_SUBST([exp_localstatedir]) -m4trace:configure.ac:41: -1- AC_SUBST([logfiledir]) -m4trace:configure.ac:41: -1- AC_SUBST([exp_logfiledir]) -m4trace:configure.ac:41: -1- AC_SUBST([masonstatedir]) -m4trace:configure.ac:41: -1- AC_SUBST([exp_masonstatedir]) -m4trace:configure.ac:41: -1- AC_SUBST([sessionstatedir]) -m4trace:configure.ac:41: -1- AC_SUBST([exp_sessionstatedir]) -m4trace:configure.ac:41: -1- AC_SUBST([customdir]) -m4trace:configure.ac:41: -1- AC_SUBST([exp_customdir]) -m4trace:configure.ac:41: -1- AC_SUBST([custometcdir]) -m4trace:configure.ac:41: -1- AC_SUBST([exp_custometcdir]) -m4trace:configure.ac:41: -1- AC_SUBST([customhtmldir]) -m4trace:configure.ac:41: -1- AC_SUBST([exp_customhtmldir]) -m4trace:configure.ac:41: -1- AC_SUBST([customlexdir]) -m4trace:configure.ac:41: -1- AC_SUBST([exp_customlexdir]) -m4trace:configure.ac:41: -1- AC_SUBST([customlibdir]) -m4trace:configure.ac:41: -1- AC_SUBST([exp_customlibdir]) -m4trace:configure.ac:41: -1- AC_SUBST([rt_layout_name]) -m4trace:configure.ac:49: -1- AC_SUBST([RTGROUP]) -m4trace:configure.ac:57: -1- AC_SUBST([BIN_OWNER]) -m4trace:configure.ac:65: -1- AC_SUBST([LIBS_OWNER]) -m4trace:configure.ac:73: -1- AC_SUBST([LIBS_GROUP]) -m4trace:configure.ac:84: -1- AC_SUBST([DB_TYPE]) -m4trace:configure.ac:91: -1- AC_SUBST([ORACLE_ENV_PREF]) -m4trace:configure.ac:99: -1- AC_SUBST([DB_HOST]) -m4trace:configure.ac:107: -1- AC_SUBST([DB_PORT]) -m4trace:configure.ac:115: -1- AC_SUBST([DB_RT_HOST]) -m4trace:configure.ac:123: -1- AC_SUBST([DB_DBA]) -m4trace:configure.ac:131: -1- AC_SUBST([DB_DATABASE]) -m4trace:configure.ac:139: -1- AC_SUBST([DB_RT_USER]) -m4trace:configure.ac:147: -1- AC_SUBST([DB_RT_PASS]) -m4trace:configure.ac:155: -1- AC_SUBST([WEB_USER]) -m4trace:configure.ac:163: -1- AC_SUBST([WEB_GROUP]) -m4trace:configure.ac:182: -1- AC_SUBST([RT_VERSION_MAJOR], [${rt_version_major}]) -m4trace:configure.ac:183: -1- AC_SUBST([RT_VERSION_MINOR], [${rt_version_minor}]) -m4trace:configure.ac:184: -1- AC_SUBST([RT_VERSION_PATCH], [${rt_version_patch}]) -m4trace:configure.ac:187: -1- AC_SUBST([RT_PATH], [${exp_prefix}]) -m4trace:configure.ac:188: -1- AC_SUBST([RT_DOC_PATH], [${exp_manualdir}]) -m4trace:configure.ac:189: -1- AC_SUBST([RT_LOCAL_PATH], [${exp_customdir}]) -m4trace:configure.ac:190: -1- AC_SUBST([RT_LIB_PATH], [${exp_libdir}]) -m4trace:configure.ac:191: -1- AC_SUBST([RT_ETC_PATH], [${exp_sysconfdir}]) -m4trace:configure.ac:192: -1- AC_SUBST([CONFIG_FILE_PATH], [${exp_sysconfdir}]) -m4trace:configure.ac:193: -1- AC_SUBST([RT_BIN_PATH], [${exp_bindir}]) -m4trace:configure.ac:194: -1- AC_SUBST([RT_SBIN_PATH], [${exp_sbindir}]) -m4trace:configure.ac:195: -1- AC_SUBST([RT_VAR_PATH], [${exp_localstatedir}]) -m4trace:configure.ac:196: -1- AC_SUBST([RT_MAN_PATH], [${exp_mandir}]) -m4trace:configure.ac:197: -1- AC_SUBST([MASON_DATA_PATH], [${exp_masonstatedir}]) -m4trace:configure.ac:198: -1- AC_SUBST([MASON_SESSION_PATH], [${exp_sessionstatedir}]) -m4trace:configure.ac:199: -1- AC_SUBST([MASON_HTML_PATH], [${exp_htmldir}]) -m4trace:configure.ac:200: -1- AC_SUBST([LOCAL_ETC_PATH], [${exp_custometcdir}]) -m4trace:configure.ac:201: -1- AC_SUBST([MASON_LOCAL_HTML_PATH], [${exp_customhtmldir}]) -m4trace:configure.ac:202: -1- AC_SUBST([LOCAL_LEXICON_PATH], [${exp_customlexdir}]) -m4trace:configure.ac:203: -1- AC_SUBST([LOCAL_LIB_PATH], [${exp_customlibdir}]) -m4trace:configure.ac:204: -1- AC_SUBST([DESTDIR], [${exp_prefix}]) -m4trace:configure.ac:205: -1- AC_SUBST([RT_LOG_PATH], [${exp_logfiledir}]) -m4trace:configure.ac:228: -1- AC_CONFIG_FILES([ - sbin/rt-setup-database - sbin/rt-test-dependencies - Makefile - etc/RT_Config.pm - lib/RT.pm - lib/t/00smoke.t - lib/t/01harness.t - lib/t/02regression.t - lib/t/03web.pl - lib/t/04_send_email.pl - bin/mason_handler.fcgi - bin/mason_handler.scgi - bin/mason_handler.svc - bin/rt-commit-handler - bin/rt-crontool - bin/rt-mailgate - bin/rt - bin/webmux.pl - ]) diff --git a/rt/bin/mason_handler.fcgi b/rt/bin/mason_handler.fcgi deleted file mode 100755 index 431eccbd3..000000000 --- a/rt/bin/mason_handler.fcgi +++ /dev/null @@ -1,54 +0,0 @@ -#!/usr/bin/perl -# BEGIN LICENSE BLOCK -# -# Copyright (c) 1996-2003 Jesse Vincent -# -# (Except where explictly superceded by other copyright notices) -# -# This work is made available to you under the terms of Version 2 of -# the GNU General Public License. A copy of that license should have -# been provided with this software, but in any event can be snarfed -# from www.gnu.org. -# -# This work 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. -# -# Unless otherwise specified, all modifications, corrections or -# extensions to this work which alter its source code become the -# property of Best Practical Solutions, LLC when submitted for -# inclusion in the work. -# -# -# END LICENSE BLOCK - -use strict; -use File::Basename; -require ('/opt/rt3/bin/webmux.pl'); - -my $h = &RT::Interface::Web::NewCGIHandler(); - -# Enter CGI::Fast mode, which should also work as a vanilla CGI script. -require CGI::Fast; - -RT::Init(); - -# Response loop -while ( my $cgi = CGI::Fast->new ) { - # the whole point of fastcgi requires the env to get reset here.. - # So we must squash it again - $ENV{'PATH'} = '/bin:/usr/bin'; - $ENV{'CDPATH'} = '' if defined $ENV{'CDPATH'}; - $ENV{'SHELL'} = '/bin/sh' if defined $ENV{'SHELL'}; - $ENV{'ENV'} = '' if defined $ENV{'ENV'}; - $ENV{'IFS'} = '' if defined $ENV{'IFS'}; - - unless ($h->interp->comp_exists($cgi->path_info)) { - $cgi->path_info($cgi->path_info . "/index.html"); - } - $h->handle_cgi_object($cgi); - # _should_ always be tied -} - -1; diff --git a/rt/bin/mason_handler.fcgi.in b/rt/bin/mason_handler.fcgi.in deleted file mode 100644 index a009663b9..000000000 --- a/rt/bin/mason_handler.fcgi.in +++ /dev/null @@ -1,68 +0,0 @@ -#!@PERL@ -# BEGIN LICENSE BLOCK -# -# Copyright (c) 1996-2003 Jesse Vincent -# -# (Except where explictly superceded by other copyright notices) -# -# This work is made available to you under the terms of Version 2 of -# the GNU General Public License. A copy of that license should have -# been provided with this software, but in any event can be snarfed -# from www.gnu.org. -# -# This work 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. -# -# Unless otherwise specified, all modifications, corrections or -# extensions to this work which alter its source code become the -# property of Best Practical Solutions, LLC when submitted for -# inclusion in the work. -# -# -# END LICENSE BLOCK - -use strict; -use File::Basename; -require ('@RT_BIN_PATH@/webmux.pl'); - -my $h = &RT::Interface::Web::NewCGIHandler(@RT::MasonParameters); - -# Enter CGI::Fast mode, which should also work as a vanilla CGI script. -require CGI::Fast; - -RT::Init(); - -# Response loop -while ( my $cgi = CGI::Fast->new ) { - # the whole point of fastcgi requires the env to get reset here.. - # So we must squash it again - $ENV{'PATH'} = '/bin:/usr/bin'; - $ENV{'CDPATH'} = '' if defined $ENV{'CDPATH'}; - $ENV{'SHELL'} = '/bin/sh' if defined $ENV{'SHELL'}; - $ENV{'ENV'} = '' if defined $ENV{'ENV'}; - $ENV{'IFS'} = '' if defined $ENV{'IFS'}; - - RT::ConnectToDatabase(); - - if ( ( !$h->interp->comp_exists( $cgi->path_info ) ) - && ( $h->interp->comp_exists( $cgi->path_info . "/index.html" ) ) ) { - $cgi->path_info( $cgi->path_info . "/index.html" ); - } - - eval { $h->handle_cgi_object($cgi); }; - if ($@) { - $RT::Logger->crit($@); - } - - - if ($RT::Handle->TransactionDepth) { - $RT::Handle->ForceRollback; - $RT::Logger->crit("Transaction not committed. Usually indicates a software fault. Data loss may have occurred") ; - } - - -} - -1; diff --git a/rt/bin/mason_handler.scgi b/rt/bin/mason_handler.scgi deleted file mode 100755 index 8e1135c2f..000000000 --- a/rt/bin/mason_handler.scgi +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/local/bin/speedy -# BEGIN LICENSE BLOCK -# -# Copyright (c) 1996-2003 Jesse Vincent -# -# (Except where explictly superceded by other copyright notices) -# -# This work is made available to you under the terms of Version 2 of -# the GNU General Public License. A copy of that license should have -# been provided with this software, but in any event can be snarfed -# from www.gnu.org. -# -# This work 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. -# -# Unless otherwise specified, all modifications, corrections or -# extensions to this work which alter its source code become the -# property of Best Practical Solutions, LLC when submitted for -# inclusion in the work. -# -# -# END LICENSE BLOCK - -use strict; -require ('/opt/rt3/bin/webmux.pl'); - -my $h = &RT::Interface::Web::NewCGIHandler(); - -require CGI; - -RT::Init(); - -my $cgi = CGI->new; -unless ($h->interp->comp_exists($cgi->path_info)) { - $cgi->path_info($cgi->path_info . "/index.html"); -} -$h->handle_cgi_object($cgi); - -1; diff --git a/rt/bin/mason_handler.scgi.in b/rt/bin/mason_handler.scgi.in deleted file mode 100644 index 614d4d47a..000000000 --- a/rt/bin/mason_handler.scgi.in +++ /dev/null @@ -1,43 +0,0 @@ -#!@SPEEDY_BIN@ -# BEGIN LICENSE BLOCK -# -# Copyright (c) 1996-2003 Jesse Vincent -# -# (Except where explictly superceded by other copyright notices) -# -# This work is made available to you under the terms of Version 2 of -# the GNU General Public License. A copy of that license should have -# been provided with this software, but in any event can be snarfed -# from www.gnu.org. -# -# This work 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. -# -# Unless otherwise specified, all modifications, corrections or -# extensions to this work which alter its source code become the -# property of Best Practical Solutions, LLC when submitted for -# inclusion in the work. -# -# -# END LICENSE BLOCK - -use strict; -require ('@RT_BIN_PATH@/webmux.pl'); - -my $h = &RT::Interface::Web::NewCGIHandler(@RT::MasonParameters); - -require CGI; - -RT::Init(); - -my $cgi = CGI->new; -if ( ( !$h->interp->comp_exists( $cgi->path_info ) ) - && ( $h->interp->comp_exists( $cgi->path_info . "/index.html" ) ) ) { - $cgi->path_info( $cgi->path_info . "/index.html" ); -} - -$h->handle_cgi_object($cgi); - -1; diff --git a/rt/bin/mason_handler.svc b/rt/bin/mason_handler.svc deleted file mode 100644 index c05d21e69..000000000 --- a/rt/bin/mason_handler.svc +++ /dev/null @@ -1,234 +0,0 @@ -#!/usr/bin/perl -# BEGIN LICENSE BLOCK -# -# Copyright (c) 1996-2003 Jesse Vincent -# -# (Except where explictly superceded by other copyright notices) -# -# This work is made available to you under the terms of Version 2 of -# the GNU General Public License. A copy of that license should have -# been provided with this software, but in any event can be snarfed -# from www.gnu.org. -# -# This work 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. -# -# Unless otherwise specified, all modifications, corrections or -# extensions to this work which alter its source code become the -# property of Best Practical Solutions, LLC when submitted for -# inclusion in the work. -# -# -# END LICENSE BLOCK - -=head1 NAME - -mason_handler.svc - Win32 IIS Service handler for RT - -=head1 SYNOPSIS - - perl mason_handler.svc --install # install as service - perl mason_handler.svc --deinstall # deinstall this service - perl mason_handler.svc --help # show this help - perl mason_handler.svc # launch handler from command line - -=head1 DESCRIPTION - -This script manages a stand-alone FastCGI server, and populates the necessary -registry settings to run it with Microsoft IIS Server 4.0 or above. - -Before running it, you need to install the B module from CPAN, as well as -B from L if you want to install -itself as a service. - -This script will automatically create a virtual directory under the IIS root; -its name is taken from C<$WebPath> in the F file. Additionally, -please install the ISAPI binary from L and set -up an ISAPI Script Map that maps F<.html> files to F. - -Once the service is launched (either via C or by running -C), a FCGI server will start and bind to port C<8284> -(mnemonics: the ASCII value of C and C); the ISAPI handler's C -registry setting will also be automatically populated. - -=cut - -use strict; -use File::Basename; -require (dirname(__FILE__) . '/webmux.pl'); - -use Cwd; -use File::Spec; - -use Win32; -use Win32::Process; -use Win32::Service; -use Win32::TieRegistry; - -my $ProcessObj; - -BEGIN { - my $runsvc = sub { - Win32::Process::Create( - $ProcessObj, $^X, "$^X $0 --run", 0, NORMAL_PRIORITY_CLASS, "." - ) or do { - die Win32::FormatMessage( Win32::GetLastError() ); - }; - - chdir File::Basename::dirname($0); - my $path = Cwd::cwd(); - $path =~ s|/|\\|g; - $path =~ s|bin$|share\\html|; - - $Win32::TieRegistry::Registry->{ - 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\\'. - 'W3SVC\Parameters\Virtual Roots\\' - }->{$RT::WebPath || '/'} = "$path,,205"; - - $Win32::TieRegistry::Registry->{ - 'HKEY_LOCAL_MACHINE\Software\FASTCGI\.html\\' - }->{'BindPath'} = $ENV{'FCGI_SOCKET_PATH'}; - - Win32::Service::StartService(Win32::NodeName, 'W3SVC'); - }; - - if ($ARGV[0] eq '--deinstall') { - chdir File::Basename::dirname($0); - my $path = Cwd::cwd(); - $path =~ s|/|\\|g; - - require Win32::Daemon; - Win32::Daemon::DeleteService('RTFastCGI'); - warn "Service 'RTFastCGI' successfully deleted.\n"; - exit; - } - elsif ($ARGV[0] eq '--install') { - chdir File::Basename::dirname($0); - my $path = Cwd::cwd(); - $path =~ s|/|\\|g; - - require Win32::Daemon; - Win32::Daemon::DeleteService('RTFastCGI'); - - my $rv = Win32::Daemon::CreateService( { - machine => '', - name => 'RTFastCGI', - display => 'RT FastCGI Handler', - path => $^X, - user => '', - pwd => $path, - description => 'Enables port 8284 as the RT FastCGI handler.', - parameters => File::Spec->catfile( - $path, File::Basename::basename($0) - ) . ' --service', - } ); - - if ($rv) { - warn "Service 'RTFastCGI' successfully created.\n"; - } - else { - warn "Failed to add service: " . Win32::FormatMessage( - Win32::Daemon::GetLastError() - ) . "\n"; - } - exit; - } - elsif ($ARGV[0] eq '--service') { - require Win32::Daemon; - - my $PrevState = Win32::Daemon::SERVICE_START_PENDING(); - Win32::Daemon::StartService() or die $^E; - - while ( 1 ) { - my $State = Win32::Daemon::State(); - last if $State == Win32::Daemon::SERVICE_STOPPED(); - - if ( $State == Win32::Daemon::SERVICE_START_PENDING() ) { - $runsvc->(); - Win32::Daemon::State( Win32::Daemon::SERVICE_RUNNING() ); - $PrevState = Win32::Daemon::SERVICE_RUNNING(); - } - elsif ( $State == Win32::Daemon::SERVICE_CONTINUE_PENDING() ) { - $ProcessObj->Resume; - Win32::Daemon::State( Win32::Daemon::SERVICE_RUNNING() ); - $PrevState = Win32::Daemon::SERVICE_RUNNING(); - } - elsif ( $State == Win32::Daemon::SERVICE_STOP_PENDING() ) { - $ProcessObj->Kill(0); - Win32::Daemon::State( Win32::Daemon::SERVICE_STOPPED() ); - $PrevState = Win32::Daemon::SERVICE_STOPPED(); - } - elsif ( $State == Win32::Daemon::SERVICE_RUNNING() ) { - my $Message = Win32::Daemon::QueryLastMessage(1); - if ( $Message == Win32::Daemon::SERVICE_CONTROL_INTERROGATE() ) { - Win32::Daemon::State( $PrevState ); - } - elsif ( $Message == Win32::Daemon::SERVICE_CONTROL_SHUTDOWN() ) { - Win32::Daemon::State( Win32::Daemon::SERVICE_STOP_PENDING(), 15000 ); - } - elsif ( $Message != Win32::Daemon::SERVICE_CONTROL_NONE() ) { - Win32::Daemon::State( $PrevState ); - } - } - - Win32::Sleep( 1000 ); - } - - Win32::Daemon::StopService(); - exit; - } - elsif ($ARGV[0] eq '--help') { - system("perldoc $0"); - exit; - } - elsif ($ARGV[0] ne '--run') { - $SIG{__DIE__} = sub { $ProcessObj->Kill(0) if $ProcessObj }; - $runsvc->(); - warn "RT FastCGI Handler launched. Press [Enter] to terminate...\n"; - ; - exit; - } -} - -############################################################################### - -warn "Begin listening on $ENV{'FCGI_SOCKET_PATH'}\n"; - -require CGI::Fast; -my $h = &RT::Interface::Web::NewCGIHandler(@RT::MasonParameters); - -RT::Init(); - -# Response loop -while( my $cgi = CGI::Fast->new ) { - my $comp = $ENV{'PATH_INFO'}; - - $comp = $1 if ($comp =~ /^(.*)$/); - $comp =~ s|^$RT::WebPath\b||i; - $comp .= "index.html" if ($comp =~ /\/$/); - $comp =~ s/.pl$/.html/g; - - warn "Serving $comp\n"; - - $h->handle_cgi($comp); - # _should_ always be tied -} - -1; - -=head1 AUTHORS - -Autrijus Tang Eautrijus@autrijus.orgE - -=head1 COPYRIGHT - -Copyright 2002 by Autrijus Tang Eautrijus@autrijus.orgE. - -This program is free software; you can redistribute it and/or -modify it under the same terms as Perl itself. - -See L - -=cut diff --git a/rt/bin/mason_handler.svc.in b/rt/bin/mason_handler.svc.in deleted file mode 100644 index 0ba1f51b5..000000000 --- a/rt/bin/mason_handler.svc.in +++ /dev/null @@ -1,234 +0,0 @@ -#!@PERL@ -# BEGIN LICENSE BLOCK -# -# Copyright (c) 1996-2003 Jesse Vincent -# -# (Except where explictly superceded by other copyright notices) -# -# This work is made available to you under the terms of Version 2 of -# the GNU General Public License. A copy of that license should have -# been provided with this software, but in any event can be snarfed -# from www.gnu.org. -# -# This work 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. -# -# Unless otherwise specified, all modifications, corrections or -# extensions to this work which alter its source code become the -# property of Best Practical Solutions, LLC when submitted for -# inclusion in the work. -# -# -# END LICENSE BLOCK - -=head1 NAME - -mason_handler.svc - Win32 IIS Service handler for RT - -=head1 SYNOPSIS - - perl mason_handler.svc --install # install as service - perl mason_handler.svc --deinstall # deinstall this service - perl mason_handler.svc --help # show this help - perl mason_handler.svc # launch handler from command line - -=head1 DESCRIPTION - -This script manages a stand-alone FastCGI server, and populates the necessary -registry settings to run it with Microsoft IIS Server 4.0 or above. - -Before running it, you need to install the B module from CPAN, as well as -B from L if you want to install -itself as a service. - -This script will automatically create a virtual directory under the IIS root; -its name is taken from C<$WebPath> in the F file. Additionally, -please install the ISAPI binary from L and set -up an ISAPI Script Map that maps F<.html> files to F. - -Once the service is launched (either via C or by running -C), a FCGI server will start and bind to port C<8284> -(mnemonics: the ASCII value of C and C); the ISAPI handler's C -registry setting will also be automatically populated. - -=cut - -use strict; -use File::Basename; -require (dirname(__FILE__) . '/webmux.pl'); - -use Cwd; -use File::Spec; - -use Win32; -use Win32::Process; -use Win32::Service; -use Win32::TieRegistry; - -my $ProcessObj; - -BEGIN { - my $runsvc = sub { - Win32::Process::Create( - $ProcessObj, $^X, "$^X $0 --run", 0, NORMAL_PRIORITY_CLASS, "." - ) or do { - die Win32::FormatMessage( Win32::GetLastError() ); - }; - - chdir File::Basename::dirname($0); - my $path = Cwd::cwd(); - $path =~ s|/|\\|g; - $path =~ s|bin$|share\\html|; - - $Win32::TieRegistry::Registry->{ - 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\\'. - 'W3SVC\Parameters\Virtual Roots\\' - }->{$RT::WebPath || '/'} = "$path,,205"; - - $Win32::TieRegistry::Registry->{ - 'HKEY_LOCAL_MACHINE\Software\FASTCGI\.html\\' - }->{'BindPath'} = $ENV{'FCGI_SOCKET_PATH'}; - - Win32::Service::StartService(Win32::NodeName, 'W3SVC'); - }; - - if ($ARGV[0] eq '--deinstall') { - chdir File::Basename::dirname($0); - my $path = Cwd::cwd(); - $path =~ s|/|\\|g; - - require Win32::Daemon; - Win32::Daemon::DeleteService('RTFastCGI'); - warn "Service 'RTFastCGI' successfully deleted.\n"; - exit; - } - elsif ($ARGV[0] eq '--install') { - chdir File::Basename::dirname($0); - my $path = Cwd::cwd(); - $path =~ s|/|\\|g; - - require Win32::Daemon; - Win32::Daemon::DeleteService('RTFastCGI'); - - my $rv = Win32::Daemon::CreateService( { - machine => '', - name => 'RTFastCGI', - display => 'RT FastCGI Handler', - path => $^X, - user => '', - pwd => $path, - description => 'Enables port 8284 as the RT FastCGI handler.', - parameters => File::Spec->catfile( - $path, File::Basename::basename($0) - ) . ' --service', - } ); - - if ($rv) { - warn "Service 'RTFastCGI' successfully created.\n"; - } - else { - warn "Failed to add service: " . Win32::FormatMessage( - Win32::Daemon::GetLastError() - ) . "\n"; - } - exit; - } - elsif ($ARGV[0] eq '--service') { - require Win32::Daemon; - - my $PrevState = Win32::Daemon::SERVICE_START_PENDING(); - Win32::Daemon::StartService() or die $^E; - - while ( 1 ) { - my $State = Win32::Daemon::State(); - last if $State == Win32::Daemon::SERVICE_STOPPED(); - - if ( $State == Win32::Daemon::SERVICE_START_PENDING() ) { - $runsvc->(); - Win32::Daemon::State( Win32::Daemon::SERVICE_RUNNING() ); - $PrevState = Win32::Daemon::SERVICE_RUNNING(); - } - elsif ( $State == Win32::Daemon::SERVICE_CONTINUE_PENDING() ) { - $ProcessObj->Resume; - Win32::Daemon::State( Win32::Daemon::SERVICE_RUNNING() ); - $PrevState = Win32::Daemon::SERVICE_RUNNING(); - } - elsif ( $State == Win32::Daemon::SERVICE_STOP_PENDING() ) { - $ProcessObj->Kill(0); - Win32::Daemon::State( Win32::Daemon::SERVICE_STOPPED() ); - $PrevState = Win32::Daemon::SERVICE_STOPPED(); - } - elsif ( $State == Win32::Daemon::SERVICE_RUNNING() ) { - my $Message = Win32::Daemon::QueryLastMessage(1); - if ( $Message == Win32::Daemon::SERVICE_CONTROL_INTERROGATE() ) { - Win32::Daemon::State( $PrevState ); - } - elsif ( $Message == Win32::Daemon::SERVICE_CONTROL_SHUTDOWN() ) { - Win32::Daemon::State( Win32::Daemon::SERVICE_STOP_PENDING(), 15000 ); - } - elsif ( $Message != Win32::Daemon::SERVICE_CONTROL_NONE() ) { - Win32::Daemon::State( $PrevState ); - } - } - - Win32::Sleep( 1000 ); - } - - Win32::Daemon::StopService(); - exit; - } - elsif ($ARGV[0] eq '--help') { - system("perldoc $0"); - exit; - } - elsif ($ARGV[0] ne '--run') { - $SIG{__DIE__} = sub { $ProcessObj->Kill(0) if $ProcessObj }; - $runsvc->(); - warn "RT FastCGI Handler launched. Press [Enter] to terminate...\n"; - ; - exit; - } -} - -############################################################################### - -warn "Begin listening on $ENV{'FCGI_SOCKET_PATH'}\n"; - -require CGI::Fast; -my $h = &RT::Interface::Web::NewCGIHandler(@RT::MasonParameters); - -RT::Init(); - -# Response loop -while( my $cgi = CGI::Fast->new ) { - my $comp = $ENV{'PATH_INFO'}; - - $comp = $1 if ($comp =~ /^(.*)$/); - $comp =~ s|^$RT::WebPath\b||i; - $comp .= "index.html" if ($comp =~ /\/$/); - $comp =~ s/.pl$/.html/g; - - warn "Serving $comp\n"; - - $h->handle_cgi($comp); - # _should_ always be tied -} - -1; - -=head1 AUTHORS - -Autrijus Tang Eautrijus@autrijus.orgE - -=head1 COPYRIGHT - -Copyright 2002 by Autrijus Tang Eautrijus@autrijus.orgE. - -This program is free software; you can redistribute it and/or -modify it under the same terms as Perl itself. - -See L - -=cut diff --git a/rt/bin/rt-commit-handler b/rt/bin/rt-commit-handler deleted file mode 100644 index 29e443ebd..000000000 --- a/rt/bin/rt-commit-handler +++ /dev/null @@ -1,846 +0,0 @@ -#!/usr/bin/perl -w -# BEGIN LICENSE BLOCK -# -# Copyright (c) 1996-2003 Jesse Vincent -# -# (Except where explictly superceded by other copyright notices) -# -# This work is made available to you under the terms of Version 2 of -# the GNU General Public License. A copy of that license should have -# been provided with this software, but in any event can be snarfed -# from www.gnu.org. -# -# This work 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. -# -# Unless otherwise specified, all modifications, corrections or -# extensions to this work which alter its source code become the -# property of Best Practical Solutions, LLC when submitted for -# inclusion in the work. -# -# -# END LICENSE BLOCK - -# {{{ Docs -# -*-Perl-*- -# -#ident "@(#)ccvs/contrib:$Name: $:$Id: rt-commit-handler,v 1.1 2003-07-15 13:16:15 ivan Exp $" -# -# Perl filter to handle the log messages from the checkin of files in multiple -# directories. This script will group the lists of files by log message, and -# send one piece of mail per unique message, no matter how many files are -# committed. - -=head1 NAME rt-commit-handler - -=head1 USAGE - - - -=head2 Regular use - -Stick the following in in CVSROOT/commitinfo - - ALL /opt/rt3/bin/rt-commit-handler --record-last-dir - -Stick the following in CVSROOT/loginfo - - ALL /opt/rt3/bin/rt-commit-handler --cvs-root /pathtocvs/root --rt %{Vvts} - -=head2 Invocation (advanced use) - -rt-commit-handler --cvs-root /path/to/cvs/root [-d] [-D] [-r] [-M module] \ - [[-m mailto] ...] [[-R replyto] ...] [-f logfile] - - - -d - turn on debugging - -m mailto - send mail to "mailto" (multiple) - -R replyto - set the "Reply-To:" to "replyto" (multiple) - -M modulename - set module name to "modulename" - -f logfile - write commit messages to logfile too - -D - generate diff commands - --rt - invoke RT commit handler - --cvs-root - specify your CVS root - - --record-last-dir - Record the last directory with changes in - pre-commit (commitinfo) mode - - -=cut - -# }}} - -use strict; -use Carp; -use Getopt::Long; -use Text::Wrap; -use Digest::MD5; -use MIME::Entity; - -use lib ("/opt/rt3/lib", "/opt/rt3/local/lib"); - -use RT::Interface::CLI qw(CleanEnv GetCurrentUser GetMessageContent loc); - -use vars - qw(@MAILER $TMPDIR $FILE_PREFIX $LASTDIR_FILE $HASH_FILE $VERSION_FILE $MESSAGE_FILE $MAIL_FILE $DEBUG $MAILTO $REPLYTO $id $MODULE_NAME - $LOGIN $COMMITLOG $CVS_ROOT $RT_HANDLER); - -#Clean out all the nasties from the environment -CleanEnv(); - -#Load etc/config.pm and drop privs -RT::LoadConfig(); - -#Drop setgid permissions -RT::DropSetGIDPermissions(); - -# {{{ Variable setup -$TMPDIR = '/tmp'; -$FILE_PREFIX = $TMPDIR . '/#cvs.'; - -# The root of your CVS install. we should get this from some smarter place. -# It needs a trailing / - -$LASTDIR_FILE = $FILE_PREFIX . "lastdir"; -$HASH_FILE = $FILE_PREFIX . "hash"; -$VERSION_FILE = $FILE_PREFIX . "version"; -$MESSAGE_FILE = $FILE_PREFIX . "message"; -$MAIL_FILE = $FILE_PREFIX . "mail"; - -$DEBUG = 0; -$RT_HANDLER = 1; - -$MAILTO = ''; - -my @files = (); -my (@log_lines); -my $do_diff = 0; -my $id = getpgrp(); # note, you *must* use a shell which does setpgrp() -$LOGIN = getpwuid($<); - -# }}} - -die "User could not be found" unless ($LOGIN); - -# {{{ parse command line arguments (file list is seen as one arg) -# -while ( my $arg = shift @ARGV ) { - - if ( $arg eq '-d' ) { - $DEBUG = 1; - warn "Debug turned on...\n"; - } - elsif ( $arg =~ /^--record-last-dir$/i ) { - record_last_dir( $id, $ARGV[0] ); - exit(0); - } - elsif ( $arg eq '-m' ) { - $MAILTO .= ", " if $MAILTO; - $MAILTO .= shift @ARGV; - } - elsif ( $arg eq '--rt' ) { - $RT_HANDLER = 1; - } - elsif ( $arg eq '-R' ) { - $REPLYTO .= ", " if $REPLYTO; - $REPLYTO .= shift @ARGV; - } - elsif ( $arg eq '-M' ) { - die ("too many '-M' args\n") if $MODULE_NAME; - $MODULE_NAME = shift @ARGV; - } - elsif ( $arg eq '--cvs-root' ) { - $CVS_ROOT = shift @ARGV; - $CVS_ROOT .= "/" unless ( $CVS_ROOT =~ /\/$/ ); - } - elsif ( $arg eq '-f' ) { - die ("too many '-f' args\n") if $COMMITLOG; - $COMMITLOG = shift @ARGV; - - # This is a disgusting hack to untaint $COMMITLOG if we're running from - # setgid cvs. - $COMMITLOG = untaint($COMMITLOG); - } - elsif ( $arg eq '-D' ) { - $do_diff = 1; - } - else { - @files = split ( ' ', $arg ); - last; - } -} - -# }}} - -$REPLYTO = $LOGIN unless ($REPLYTO); - -# for now, the first "file" is the repository directory being committed, -# relative to the $CVSROOT location -# -my $dir = shift @files; - -# XXX there are some ugly assumptions in here about module names and -# XXX directories relative to the $CVSROOT location -- really should -# XXX read $CVSROOT/CVSROOT/modules, but that's not so easy to do, since -# XXX we have to parse it backwards. -# -# XXX For now we set the `module' name to the top-level directory name. -# -unless ($MODULE_NAME) { - ($MODULE_NAME) = split ( '/', $dir, 2 ); -} - -if ($DEBUG) { - warn "module - ", $MODULE_NAME, "\n"; - warn "dir - ", $dir, "\n"; - warn "files - ", join ( " ", @files ), "\n"; - warn "id - ", $id, "\n"; -} - -# {{{ Check for a new directory or an import command. - -# -# files[0] - "-" -# files[1] - "New" -# files[2] - "directory" -# -# files[0] - "-" -# files[1] - "Imported" -# files[2] - "sources" -# -if ( $files[0] eq "-" ) { - - #we just don't care about New Directory notes - unless ( $files[1] eq "New" && $files[2] eq "directory" ) { - - my @text = (); - - push @text, build_header(); - push @text, ""; - - while ( my $line = ) { - chop $line; # Drop the newline - push @text, $line; - } - - append_logfile( $COMMITLOG, @text ) if ($COMMITLOG); - - mail_notification( $id, @text ); - } - - exit 0; -} - -# }}} - -# {{{ Collect just the log message from stdin. -# - -while ( my $line = ) { - chop $line; # strip the newline - last if ( $line =~ /^Log Message:$/ ); -} -while ( my $line = ) { - chop $line; # strip the newline - $line =~ s/\s+$//; # strip trailing white space - push @log_lines, $line; -} - -my $md5 = Digest::MD5->new(); -foreach my $line (@log_lines) { - $md5->add( $line . "\n" ); -} -my $hash = $md5->hexdigest(); - -warn "hash = $hash\n" if ($DEBUG); - -if ( !-e "$MESSAGE_FILE.$id.$hash" ) { - append_logfile( "$HASH_FILE.$id", $hash ); - write_file( "$MESSAGE_FILE.$id.$hash", @log_lines ); -} - -# }}} - -# Spit out the information gathered in this pass. - -append_logfile( "$VERSION_FILE.$id.$hash", $dir . '/', @files ); - -# {{{ Check whether this is the last directory. If not, quit. - -warn "Checking current dir against last dir $LASTDIR_FILE.$id\n" if ($DEBUG); - -my @last_dir = read_file("$LASTDIR_FILE.$id"); - -unless ($CVS_ROOT) { - die "No cvs root specified with --cvs-root. Can't continue."; -} - -if ( $last_dir[0] ne $CVS_ROOT . $dir ) { - warn "Current directory $CVS_ROOT$dir is not last directory $last_dir[0].\n" - if ($DEBUG); - exit 0; -} - -# }}} - -# {{{ End Of Commits! -# - -# This is it. The commits are all finished. Lump everything together -# into a single message, fire a copy off to the mailing list, and drop -# it on the end of the Changes file. -# - -# -# Produce the final compilation of the log messages -# - -my @hashes = read_file("$HASH_FILE.$id"); -my (@text); - -push @text, build_header(); -push @text, ""; - -my ( @added_files, @modified_files, @removed_files ); - -foreach my $hash (@hashes) { - - # In case we're running setgid, make sure the hash file hasn't been hacked. - $hash =~ m/([a-z0-9]*)/ || die "*** Hacking attempt detected\n"; - $hash = $1; - - my @files = read_file("$VERSION_FILE.$id.$hash"); - my @log_lines = read_file("$MESSAGE_FILE.$id.$hash"); - - my $working_on_dir; # gets set as we iterate through the files. - foreach my $file (@files) { - - #If we've entered a new directory, make a note of that and remove the trailing / - - if ( $file =~ s'\/$'' ) { - $working_on_dir = $file; - next; - } - - my @file_entry = ( split ( ',', $file, 4 ), $working_on_dir ); - - # file_entry looks like ths: - - # 0 1 2 3 4 - # Old rev : new rev : tag: file :directory - my $entry = {}; - $entry->{'old'} = $file_entry[0]; - $entry->{'new'} = $file_entry[1]; - $entry->{'tag'} = $file_entry[2]; - $entry->{'file'} = $file_entry[3]; - $entry->{'dir'} = $file_entry[4]; - - if ( $file_entry[0] eq 'NONE' ) { - $entry->{'old'} = '0'; - push @added_files, $entry; - } - elsif ( $file_entry[1] eq 'NONE' ) { - $entry->{'new'} = '0'; - push @removed_files, $entry; - } - else { - push @modified_files, $entry; - } - } -} - -# }}} - -# {{{ start building up the body - -# Strip leading and trailing blank lines from the log message. Also -# compress multiple blank lines in the body of the message down to a -# single blank line. -# - -my $blank = 1; -@log_lines = map { - my $wasblank = $blank; - $blank = $_ eq ''; - $blank && $wasblank ? () : $_; -} @log_lines; - -pop @log_lines if $blank; - -@modified_files = order_and_summarize_diffs(@modified_files); -@added_files = order_and_summarize_diffs(@added_files); -@removed_files = order_and_summarize_diffs(@removed_files); - -push @text, "Modified Files:", format_lists(@modified_files) - if (@modified_files); - -push @text, "Added Files:", format_lists(@added_files) if (@added_files); - -push @text, "Removed Files:", format_lists(@removed_files) if (@removed_files); - -push @text, "", "Log Message", @log_lines if (@log_lines); - -push @text, ""; - -if ($RT_HANDLER) { - rt_handler( - @log_lines, "\n", - loc("To generate a diff of this commit:\n"), "\n", - format_diffs( @modified_files, @added_files, @removed_files ) - ); -} - -if ($COMMITLOG) { - append_logfile( $COMMITLOG, @text ); -} - -if ($do_diff) { - push @text, ""; - push @text, loc("To generate a diff of this commit:"); - push @text, format_diffs( @modified_files, @added_files, @removed_files ); - push @text, ""; -} - -# }}} - -# {{{ Mail out the notification. - -mail_notification( $id, @text ); - -# }}} - -# {{{ clean up - -unless ($DEBUG) { - $hash = untaint($hash); - $id = untaint($id); - unlink "$VERSION_FILE.$id.$hash"; - unlink "$MESSAGE_FILE.$id.$hash"; - unlink "$MAIL_FILE.$id"; - unlink "$LASTDIR_FILE.$id"; - unlink "$HASH_FILE.$id"; -} - -# }}} - -exit 0; - -# {{{ Subroutines -# - -# {{{ append_logfile -sub append_logfile { - my $filename = shift; - my (@lines) = @_; - - $filename = untaint($filename); - - open( FILE, ">>$filename" ) - || die ("Cannot open file $filename for append.\n"); - foreach my $line (@lines) { - print FILE $line . "\n"; - } - close(FILE); -} - -# }}} - -# {{{ write_file -sub write_file { - my $filename = shift; - my (@lines) = @_; - - $filename = untaint($filename); - - open( FILE, ">$filename" ) - || die ("Cannot open file $filename for write.\n"); - foreach my $line (@lines) { - print FILE $line . "\n"; - } - close(FILE); -} - -# }}} - -# {{{ read_file -sub read_file { - my $filename = shift; - my (@lines); - - open( FILE, "<$filename" ) - || die ("Cannot open file $filename for read.\n"); - while ( my $line = ) { - chop $line; - push @lines, $line; - } - close(FILE); - - return (@lines); -} - -# }}} - -# {{{ sub format_lists - -sub format_lists { - my @items = (@_); - - my $files = ""; - map { - $_->{'files'} && ( $files .= ' ' . join ( ' ', @{ $_->{'files'} } ) ); - } @items; - - my @lines = wrap( "\t", "\t\t", $files ); - return (@lines); - -} - -# }}} - -# {{{ sub format_diffs - -sub format_diffs { - my @items = (@_); - - my @lines; - foreach my $item (@items) { - next unless ( $item->{'files'} ); - push ( @lines, - "cvs diff -r" - . $item->{'old'} . " -r" - . $item->{'new'} . " " - . join ( " ", @{ $item->{'files'} } ) . "\n" ); - - } - - @lines = fill( "\t", "\t\t", @lines ); - - return (@lines); -} - -# }}} - -# {{{ sub order_and_summarize_diffs { - -# takes an array of file items -# returns a sorted array of fileset items, which are like file items, except they can have an array of files, rather than -# a singleton file. - -sub order_and_summarize_diffs { - - my @files = (@_); - - # Sort by tag, dir, file. - @files = sort { - $a->{'tag'} cmp $b->{'tag'} - || $a->{'dir'} cmp $b->{'dir'} - || $a->{'file'} cmp $b->{'file'}; - } @files; - - # Combine adjacent rows that are the same modulo the file name. - - my @items = (undef); - - foreach my $file (@files) { - if ( $#items == -1 #if it's empty - || ( !defined $items[-1]->{'old'} - || $items[-1]->{'old'} ne $file->{'old'} ) - || ( !defined $items[-1]->{'new'} - || $items[-1]->{'new'} ne $file->{'new'} ) - || ( !defined $items[-1]->{'tag'} - || $items[-1]->{'tag'} ne $file->{'tag'} ) ) - { - - push ( @items, $file ); - } - push ( @{ $items[-1]->{'files'} }, - $file->{'dir'} . "/" . $file->{'file'} ); - } - - return (@items); -} - -# }}} - -# {{{ build_header - -sub build_header { - my $now = gmtime; - my $header = - sprintf( "Module Name:\t%s\nCommitted By:\t%s\nDate:\t\t%s %s %s", - $MODULE_NAME, $LOGIN, substr( $now, 0, 19 ), "UTC", - substr( $now, 20, 4 ) ); - return ($header); -} - -# }}} - -# {{{ mail_notification -sub mail_notification { - my $id = shift; - my (@text) = @_; - write_file( "$MAIL_FILE.$id", "From: " . $LOGIN, - "Subject: CVS commit: " . $MODULE_NAME, "To: " . $MAILTO, - "Reply-To: " . $REPLYTO, "", "", @text ); - - my $entity = MIME::Entity->build( - From => $LOGIN, - To => $MAILTO, - Subject => "CVS commit: " . $MODULE_NAME, - 'Reply-To' => $REPLYTO, - Data => join ( "\n", @text ) - ); - if ( $RT::MailCommand eq 'sendmailpipe' ) { - open( MAIL, "|$RT::SendmailPath $RT::SendmailArguments" ) - || die "Couldn't send mail: " . $@ . "\n"; - print MAIL $entity->as_string; - close(MAIL); - } - else { - $entity->send( $RT::MailCommand, $RT::MailParams ); - } - -} - -# }}} - -# {{{ sub record_last_dir - -sub record_last_dir { - my $id = shift; - my $dir = shift; - - # make a note of this directory. later, we'll use this to - # figure out if we've gone through the whole commit, - # for something that is a bad mockery of attomic commits. - - warn "about to write $dir to $LASTDIR_FILE.$id" if ($DEBUG); - - write_file( "$LASTDIR_FILE.$id", $dir ); -} - -# }}} - -# {{{ Get the RT stuff set up - -# {{{ sub rt_handler - -sub rt_handler { - my (@LogMessage) = (@_); - - #Connect to the database and get RT::SystemUser and RT::Nobody loaded - RT::Init; - - require RT::Ticket; - - #Get the current user all loaded - my $CurrentUser = GetCurrentUser(); - - if ( !$CurrentUser->Id ) { - print -loc("No valid RT user found. RT cvs handler disengaged. Please consult your RT administrator.\n"); - return; - } - - my (@commands) = find_commands( \@LogMessage ); - - my ( @tickets, @errors ); - - # Get the list of tickets we're working with out of commands - grep { $_ =~ /^RT-Ticket:\s*(.*?)$/i && push ( @tickets, $1 ) } @commands; - - my $message = new MIME::Entity; - $message->build( - From => $CurrentUser->EmailAddress, - Subject => 'CVS Commit', - Data => \@LogMessage - ); - - # {{{ comment or correspond, as needed - - foreach my $ticket (@tickets) { - my $TicketObj = RT::Ticket->new($CurrentUser); - $TicketObj->Load($ticket); - my ( $id, $msg ); - unless ( $TicketObj->Id ) { - push ( @errors, -"Couldn't load ticket #$ticket. Not adding commit log to ticket history.\n" - ); - } - - if ( $LogMessage[0] =~ /^(comment|private)$/ ) { - ( $id, $msg ) = $TicketObj->Comment( MIMEObj => $message ); - - } - else { - ( $id, $msg ) = $TicketObj->Correspond( MIMEObj => $message ); - } - - push ( @errors, ">> Log message", - "Ticket #" . $TicketObj->Id . ": " . $msg ); - - } - - # }}} - - my ($reply) = ActOnPseudoHeaders( $CurrentUser, @commands ); - print "$reply\n" if ($reply); - print join ( "\n", @errors ); - print "\n"; - -} - -# }}} - -# {{{ sub find_commands - -sub find_commands { - my $lines = shift; - my (@pseudoheaders); - - while ( my $line = shift @{$lines} ) { - next if $line =~ /^\s*?$/; - if ( $line =~ /^RT-/i ) { - - push ( @pseudoheaders, $line ); - } - - #If we find a line that's not a command, get out. - else { - unshift ( @{$lines}, $line ); - last; - } - } - - return (@pseudoheaders); - -} - -# }}} - -# {{{ sub ActOnPseudoHeaders - -=item ActOnPseudoHeaders $PseudoHeaders - -Takes a string of pseudo-headers, iterates through them and does what they tell it to. - -=cut - -sub ActOnPseudoHeaders { - my $CurrentUser = shift; - my (@actions) = (@_); - - my $ResultsMessage = ''; - my $Ticket = RT::Ticket->new($CurrentUser); - - foreach my $action (@actions) { - my ($val); - my $msg = ''; - - $ResultsMessage .= ">>> $action\n"; - - if ( $action =~ /^RT-(.*?):\s*(.*)$/i ) { - my $command = $1; - my $args = $2; - - if ( $command =~ /^ticket$/i ) { - - $val = $Ticket->Load($args); - unless ($val) { - $ResultsMessage .= - loc("ERROR: Couldn't load ticket '[_1]': [_2].\n", $1, $msg); - . loc("Aborting to avoid unintended ticket modifications.\n") - . loc("The following commands were not proccessed:\n\n") - . join ( "\n", @actions ); - return ($ResultsMessage); - } - $ResultsMessage .= loc("Ticket [_1] loaded\n", $Ticket->Id); - } - else { - unless ( $Ticket->Id ) { - $ResultsMessage .= loc("No Ticket specified. Aborting ticket ") - . loc("modifications\n\n") - . loc("The following commands were not proccessed:\n\n") - . join ( "\n", @actions ); - return ($ResultsMessage); - } - - # Deal with the basics - if ( $command =~ /^(Subject|Owner|Status|Queue)$/i ) { - my $method = 'Set' . ucfirst( lc($1) ); - ( $val, $msg ) = $Ticket->$method($args); - } - - # Deal with the dates - elsif ( $command =~ /^(due|starts|started|resolved)$/i ) { - my $method = 'Set' . ucfirst( lc($1) ); - my $date = new RT::Date($CurrentUser); - $date->Set( Format => 'unknown', Value => $args ); - ( $val, $msg ) = $Ticket->$method( $date->ISO ); - } - - # Deal with the watchers - elsif ( $command =~ /^(requestor|requestors|cc|admincc)$/i ) { - my $operator = "+"; - my ($type); - if ( $args =~ /^(\+|\-)(.*)$/ ) { - $operator = $1; - $args = $2; - } - $type = 'Requestor' if ( $command =~ /^requestor/i ); - $type = 'Cc' if ( $command =~ /^cc/i ); - $type = 'AdminCc' if ( $command =~ /^admincc/i ); - - my $user = RT::User->new($CurrentUser); - $user->Load($args); - - if ($operator eq '+') { - ($val, $msg) = $Ticket->AddWatcher( Type => $type, - PrincipalId => $user->PrincipalId); - } elsif ($operator eq '-') { - ($val, $msg) = $Ticket->DeleteWatcher( Type => $type, - PrincipalId => $user->PrincipalId); - } - - } - $ResultsMessage .= $msg . "\n"; - } - - } - return ($ResultsMessage); - -} - -# }}} - -# {{{ sub untaint -sub untaint { - my $val = shift; - - if ( $val =~ /^([-\#\/\w.]+)$/ ) { - $val = $1; # $data now untainted - } - else { - die loc("Bad data in [_1]", $val); # log this somewhere - } - return ($val); -} - -# }}} - -=head1 AUTHOR - - - - rt-commit-handler is a rewritten version of the NetBSD commit handler, - which was placed in the public domain by Charles Hannum. It bore the following - authors statement: - - Contributed by David Hampton - Hacked greatly by Greg A. Woods - Rewritten by Charles M. Hannum - -=cut - diff --git a/rt/bin/rt-commit-handler.in b/rt/bin/rt-commit-handler.in deleted file mode 100644 index 02b01abff..000000000 --- a/rt/bin/rt-commit-handler.in +++ /dev/null @@ -1,846 +0,0 @@ -#!@PERL@ -w -# BEGIN LICENSE BLOCK -# -# Copyright (c) 1996-2003 Jesse Vincent -# -# (Except where explictly superceded by other copyright notices) -# -# This work is made available to you under the terms of Version 2 of -# the GNU General Public License. A copy of that license should have -# been provided with this software, but in any event can be snarfed -# from www.gnu.org. -# -# This work 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. -# -# Unless otherwise specified, all modifications, corrections or -# extensions to this work which alter its source code become the -# property of Best Practical Solutions, LLC when submitted for -# inclusion in the work. -# -# -# END LICENSE BLOCK - -# {{{ Docs -# -*-Perl-*- -# -#ident "@(#)ccvs/contrib:$Name: $:$Id: rt-commit-handler.in,v 1.1 2003-07-15 13:16:15 ivan Exp $" -# -# Perl filter to handle the log messages from the checkin of files in multiple -# directories. This script will group the lists of files by log message, and -# send one piece of mail per unique message, no matter how many files are -# committed. - -=head1 NAME rt-commit-handler - -=head1 USAGE - - - -=head2 Regular use - -Stick the following in in CVSROOT/commitinfo - - ALL @RT_BIN_PATH@/rt-commit-handler --record-last-dir - -Stick the following in CVSROOT/loginfo - - ALL @RT_BIN_PATH@/rt-commit-handler --cvs-root /pathtocvs/root --rt %{Vvts} - -=head2 Invocation (advanced use) - -rt-commit-handler --cvs-root /path/to/cvs/root [-d] [-D] [-r] [-M module] \ - [[-m mailto] ...] [[-R replyto] ...] [-f logfile] - - - -d - turn on debugging - -m mailto - send mail to "mailto" (multiple) - -R replyto - set the "Reply-To:" to "replyto" (multiple) - -M modulename - set module name to "modulename" - -f logfile - write commit messages to logfile too - -D - generate diff commands - --rt - invoke RT commit handler - --cvs-root - specify your CVS root - - --record-last-dir - Record the last directory with changes in - pre-commit (commitinfo) mode - - -=cut - -# }}} - -use strict; -use Carp; -use Getopt::Long; -use Text::Wrap; -use Digest::MD5; -use MIME::Entity; - -use lib ("@RT_LIB_PATH@", "@LOCAL_LIB_PATH@"); - -use RT::Interface::CLI qw(CleanEnv GetCurrentUser GetMessageContent loc); - -use vars - qw(@MAILER $TMPDIR $FILE_PREFIX $LASTDIR_FILE $HASH_FILE $VERSION_FILE $MESSAGE_FILE $MAIL_FILE $DEBUG $MAILTO $REPLYTO $id $MODULE_NAME - $LOGIN $COMMITLOG $CVS_ROOT $RT_HANDLER); - -#Clean out all the nasties from the environment -CleanEnv(); - -#Load etc/config.pm and drop privs -RT::LoadConfig(); - -#Drop setgid permissions -RT::DropSetGIDPermissions(); - -# {{{ Variable setup -$TMPDIR = '/tmp'; -$FILE_PREFIX = $TMPDIR . '/#cvs.'; - -# The root of your CVS install. we should get this from some smarter place. -# It needs a trailing / - -$LASTDIR_FILE = $FILE_PREFIX . "lastdir"; -$HASH_FILE = $FILE_PREFIX . "hash"; -$VERSION_FILE = $FILE_PREFIX . "version"; -$MESSAGE_FILE = $FILE_PREFIX . "message"; -$MAIL_FILE = $FILE_PREFIX . "mail"; - -$DEBUG = 0; -$RT_HANDLER = 1; - -$MAILTO = ''; - -my @files = (); -my (@log_lines); -my $do_diff = 0; -my $id = getpgrp(); # note, you *must* use a shell which does setpgrp() -$LOGIN = getpwuid($<); - -# }}} - -die "User could not be found" unless ($LOGIN); - -# {{{ parse command line arguments (file list is seen as one arg) -# -while ( my $arg = shift @ARGV ) { - - if ( $arg eq '-d' ) { - $DEBUG = 1; - warn "Debug turned on...\n"; - } - elsif ( $arg =~ /^--record-last-dir$/i ) { - record_last_dir( $id, $ARGV[0] ); - exit(0); - } - elsif ( $arg eq '-m' ) { - $MAILTO .= ", " if $MAILTO; - $MAILTO .= shift @ARGV; - } - elsif ( $arg eq '--rt' ) { - $RT_HANDLER = 1; - } - elsif ( $arg eq '-R' ) { - $REPLYTO .= ", " if $REPLYTO; - $REPLYTO .= shift @ARGV; - } - elsif ( $arg eq '-M' ) { - die ("too many '-M' args\n") if $MODULE_NAME; - $MODULE_NAME = shift @ARGV; - } - elsif ( $arg eq '--cvs-root' ) { - $CVS_ROOT = shift @ARGV; - $CVS_ROOT .= "/" unless ( $CVS_ROOT =~ /\/$/ ); - } - elsif ( $arg eq '-f' ) { - die ("too many '-f' args\n") if $COMMITLOG; - $COMMITLOG = shift @ARGV; - - # This is a disgusting hack to untaint $COMMITLOG if we're running from - # setgid cvs. - $COMMITLOG = untaint($COMMITLOG); - } - elsif ( $arg eq '-D' ) { - $do_diff = 1; - } - else { - @files = split ( ' ', $arg ); - last; - } -} - -# }}} - -$REPLYTO = $LOGIN unless ($REPLYTO); - -# for now, the first "file" is the repository directory being committed, -# relative to the $CVSROOT location -# -my $dir = shift @files; - -# XXX there are some ugly assumptions in here about module names and -# XXX directories relative to the $CVSROOT location -- really should -# XXX read $CVSROOT/CVSROOT/modules, but that's not so easy to do, since -# XXX we have to parse it backwards. -# -# XXX For now we set the `module' name to the top-level directory name. -# -unless ($MODULE_NAME) { - ($MODULE_NAME) = split ( '/', $dir, 2 ); -} - -if ($DEBUG) { - warn "module - ", $MODULE_NAME, "\n"; - warn "dir - ", $dir, "\n"; - warn "files - ", join ( " ", @files ), "\n"; - warn "id - ", $id, "\n"; -} - -# {{{ Check for a new directory or an import command. - -# -# files[0] - "-" -# files[1] - "New" -# files[2] - "directory" -# -# files[0] - "-" -# files[1] - "Imported" -# files[2] - "sources" -# -if ( $files[0] eq "-" ) { - - #we just don't care about New Directory notes - unless ( $files[1] eq "New" && $files[2] eq "directory" ) { - - my @text = (); - - push @text, build_header(); - push @text, ""; - - while ( my $line = ) { - chop $line; # Drop the newline - push @text, $line; - } - - append_logfile( $COMMITLOG, @text ) if ($COMMITLOG); - - mail_notification( $id, @text ); - } - - exit 0; -} - -# }}} - -# {{{ Collect just the log message from stdin. -# - -while ( my $line = ) { - chop $line; # strip the newline - last if ( $line =~ /^Log Message:$/ ); -} -while ( my $line = ) { - chop $line; # strip the newline - $line =~ s/\s+$//; # strip trailing white space - push @log_lines, $line; -} - -my $md5 = Digest::MD5->new(); -foreach my $line (@log_lines) { - $md5->add( $line . "\n" ); -} -my $hash = $md5->hexdigest(); - -warn "hash = $hash\n" if ($DEBUG); - -if ( !-e "$MESSAGE_FILE.$id.$hash" ) { - append_logfile( "$HASH_FILE.$id", $hash ); - write_file( "$MESSAGE_FILE.$id.$hash", @log_lines ); -} - -# }}} - -# Spit out the information gathered in this pass. - -append_logfile( "$VERSION_FILE.$id.$hash", $dir . '/', @files ); - -# {{{ Check whether this is the last directory. If not, quit. - -warn "Checking current dir against last dir $LASTDIR_FILE.$id\n" if ($DEBUG); - -my @last_dir = read_file("$LASTDIR_FILE.$id"); - -unless ($CVS_ROOT) { - die "No cvs root specified with --cvs-root. Can't continue."; -} - -if ( $last_dir[0] ne $CVS_ROOT . $dir ) { - warn "Current directory $CVS_ROOT$dir is not last directory $last_dir[0].\n" - if ($DEBUG); - exit 0; -} - -# }}} - -# {{{ End Of Commits! -# - -# This is it. The commits are all finished. Lump everything together -# into a single message, fire a copy off to the mailing list, and drop -# it on the end of the Changes file. -# - -# -# Produce the final compilation of the log messages -# - -my @hashes = read_file("$HASH_FILE.$id"); -my (@text); - -push @text, build_header(); -push @text, ""; - -my ( @added_files, @modified_files, @removed_files ); - -foreach my $hash (@hashes) { - - # In case we're running setgid, make sure the hash file hasn't been hacked. - $hash =~ m/([a-z0-9]*)/ || die "*** Hacking attempt detected\n"; - $hash = $1; - - my @files = read_file("$VERSION_FILE.$id.$hash"); - my @log_lines = read_file("$MESSAGE_FILE.$id.$hash"); - - my $working_on_dir; # gets set as we iterate through the files. - foreach my $file (@files) { - - #If we've entered a new directory, make a note of that and remove the trailing / - - if ( $file =~ s'\/$'' ) { - $working_on_dir = $file; - next; - } - - my @file_entry = ( split ( ',', $file, 4 ), $working_on_dir ); - - # file_entry looks like ths: - - # 0 1 2 3 4 - # Old rev : new rev : tag: file :directory - my $entry = {}; - $entry->{'old'} = $file_entry[0]; - $entry->{'new'} = $file_entry[1]; - $entry->{'tag'} = $file_entry[2]; - $entry->{'file'} = $file_entry[3]; - $entry->{'dir'} = $file_entry[4]; - - if ( $file_entry[0] eq 'NONE' ) { - $entry->{'old'} = '0'; - push @added_files, $entry; - } - elsif ( $file_entry[1] eq 'NONE' ) { - $entry->{'new'} = '0'; - push @removed_files, $entry; - } - else { - push @modified_files, $entry; - } - } -} - -# }}} - -# {{{ start building up the body - -# Strip leading and trailing blank lines from the log message. Also -# compress multiple blank lines in the body of the message down to a -# single blank line. -# - -my $blank = 1; -@log_lines = map { - my $wasblank = $blank; - $blank = $_ eq ''; - $blank && $wasblank ? () : $_; -} @log_lines; - -pop @log_lines if $blank; - -@modified_files = order_and_summarize_diffs(@modified_files); -@added_files = order_and_summarize_diffs(@added_files); -@removed_files = order_and_summarize_diffs(@removed_files); - -push @text, "Modified Files:", format_lists(@modified_files) - if (@modified_files); - -push @text, "Added Files:", format_lists(@added_files) if (@added_files); - -push @text, "Removed Files:", format_lists(@removed_files) if (@removed_files); - -push @text, "", "Log Message", @log_lines if (@log_lines); - -push @text, ""; - -if ($RT_HANDLER) { - rt_handler( - @log_lines, "\n", - loc("To generate a diff of this commit:\n"), "\n", - format_diffs( @modified_files, @added_files, @removed_files ) - ); -} - -if ($COMMITLOG) { - append_logfile( $COMMITLOG, @text ); -} - -if ($do_diff) { - push @text, ""; - push @text, loc("To generate a diff of this commit:"); - push @text, format_diffs( @modified_files, @added_files, @removed_files ); - push @text, ""; -} - -# }}} - -# {{{ Mail out the notification. - -mail_notification( $id, @text ); - -# }}} - -# {{{ clean up - -unless ($DEBUG) { - $hash = untaint($hash); - $id = untaint($id); - unlink "$VERSION_FILE.$id.$hash"; - unlink "$MESSAGE_FILE.$id.$hash"; - unlink "$MAIL_FILE.$id"; - unlink "$LASTDIR_FILE.$id"; - unlink "$HASH_FILE.$id"; -} - -# }}} - -exit 0; - -# {{{ Subroutines -# - -# {{{ append_logfile -sub append_logfile { - my $filename = shift; - my (@lines) = @_; - - $filename = untaint($filename); - - open( FILE, ">>$filename" ) - || die ("Cannot open file $filename for append.\n"); - foreach my $line (@lines) { - print FILE $line . "\n"; - } - close(FILE); -} - -# }}} - -# {{{ write_file -sub write_file { - my $filename = shift; - my (@lines) = @_; - - $filename = untaint($filename); - - open( FILE, ">$filename" ) - || die ("Cannot open file $filename for write.\n"); - foreach my $line (@lines) { - print FILE $line . "\n"; - } - close(FILE); -} - -# }}} - -# {{{ read_file -sub read_file { - my $filename = shift; - my (@lines); - - open( FILE, "<$filename" ) - || die ("Cannot open file $filename for read.\n"); - while ( my $line = ) { - chop $line; - push @lines, $line; - } - close(FILE); - - return (@lines); -} - -# }}} - -# {{{ sub format_lists - -sub format_lists { - my @items = (@_); - - my $files = ""; - map { - $_->{'files'} && ( $files .= ' ' . join ( ' ', @{ $_->{'files'} } ) ); - } @items; - - my @lines = wrap( "\t", "\t\t", $files ); - return (@lines); - -} - -# }}} - -# {{{ sub format_diffs - -sub format_diffs { - my @items = (@_); - - my @lines; - foreach my $item (@items) { - next unless ( $item->{'files'} ); - push ( @lines, - "cvs diff -r" - . $item->{'old'} . " -r" - . $item->{'new'} . " " - . join ( " ", @{ $item->{'files'} } ) . "\n" ); - - } - - @lines = fill( "\t", "\t\t", @lines ); - - return (@lines); -} - -# }}} - -# {{{ sub order_and_summarize_diffs { - -# takes an array of file items -# returns a sorted array of fileset items, which are like file items, except they can have an array of files, rather than -# a singleton file. - -sub order_and_summarize_diffs { - - my @files = (@_); - - # Sort by tag, dir, file. - @files = sort { - $a->{'tag'} cmp $b->{'tag'} - || $a->{'dir'} cmp $b->{'dir'} - || $a->{'file'} cmp $b->{'file'}; - } @files; - - # Combine adjacent rows that are the same modulo the file name. - - my @items = (undef); - - foreach my $file (@files) { - if ( $#items == -1 #if it's empty - || ( !defined $items[-1]->{'old'} - || $items[-1]->{'old'} ne $file->{'old'} ) - || ( !defined $items[-1]->{'new'} - || $items[-1]->{'new'} ne $file->{'new'} ) - || ( !defined $items[-1]->{'tag'} - || $items[-1]->{'tag'} ne $file->{'tag'} ) ) - { - - push ( @items, $file ); - } - push ( @{ $items[-1]->{'files'} }, - $file->{'dir'} . "/" . $file->{'file'} ); - } - - return (@items); -} - -# }}} - -# {{{ build_header - -sub build_header { - my $now = gmtime; - my $header = - sprintf( "Module Name:\t%s\nCommitted By:\t%s\nDate:\t\t%s %s %s", - $MODULE_NAME, $LOGIN, substr( $now, 0, 19 ), "UTC", - substr( $now, 20, 4 ) ); - return ($header); -} - -# }}} - -# {{{ mail_notification -sub mail_notification { - my $id = shift; - my (@text) = @_; - write_file( "$MAIL_FILE.$id", "From: " . $LOGIN, - "Subject: CVS commit: " . $MODULE_NAME, "To: " . $MAILTO, - "Reply-To: " . $REPLYTO, "", "", @text ); - - my $entity = MIME::Entity->build( - From => $LOGIN, - To => $MAILTO, - Subject => "CVS commit: " . $MODULE_NAME, - 'Reply-To' => $REPLYTO, - Data => join ( "\n", @text ) - ); - if ( $RT::MailCommand eq 'sendmailpipe' ) { - open( MAIL, "|$RT::SendmailPath $RT::SendmailArguments" ) - || die "Couldn't send mail: " . $@ . "\n"; - print MAIL $entity->as_string; - close(MAIL); - } - else { - $entity->send( $RT::MailCommand, $RT::MailParams ); - } - -} - -# }}} - -# {{{ sub record_last_dir - -sub record_last_dir { - my $id = shift; - my $dir = shift; - - # make a note of this directory. later, we'll use this to - # figure out if we've gone through the whole commit, - # for something that is a bad mockery of attomic commits. - - warn "about to write $dir to $LASTDIR_FILE.$id" if ($DEBUG); - - write_file( "$LASTDIR_FILE.$id", $dir ); -} - -# }}} - -# {{{ Get the RT stuff set up - -# {{{ sub rt_handler - -sub rt_handler { - my (@LogMessage) = (@_); - - #Connect to the database and get RT::SystemUser and RT::Nobody loaded - RT::Init; - - require RT::Ticket; - - #Get the current user all loaded - my $CurrentUser = GetCurrentUser(); - - if ( !$CurrentUser->Id ) { - print -loc("No valid RT user found. RT cvs handler disengaged. Please consult your RT administrator.\n"); - return; - } - - my (@commands) = find_commands( \@LogMessage ); - - my ( @tickets, @errors ); - - # Get the list of tickets we're working with out of commands - grep { $_ =~ /^RT-Ticket:\s*(.*?)$/i && push ( @tickets, $1 ) } @commands; - - my $message = new MIME::Entity; - $message->build( - From => $CurrentUser->EmailAddress, - Subject => 'CVS Commit', - Data => \@LogMessage - ); - - # {{{ comment or correspond, as needed - - foreach my $ticket (@tickets) { - my $TicketObj = RT::Ticket->new($CurrentUser); - $TicketObj->Load($ticket); - my ( $id, $msg ); - unless ( $TicketObj->Id ) { - push ( @errors, -"Couldn't load ticket #$ticket. Not adding commit log to ticket history.\n" - ); - } - - if ( $LogMessage[0] =~ /^(comment|private)$/ ) { - ( $id, $msg ) = $TicketObj->Comment( MIMEObj => $message ); - - } - else { - ( $id, $msg ) = $TicketObj->Correspond( MIMEObj => $message ); - } - - push ( @errors, ">> Log message", - "Ticket #" . $TicketObj->Id . ": " . $msg ); - - } - - # }}} - - my ($reply) = ActOnPseudoHeaders( $CurrentUser, @commands ); - print "$reply\n" if ($reply); - print join ( "\n", @errors ); - print "\n"; - -} - -# }}} - -# {{{ sub find_commands - -sub find_commands { - my $lines = shift; - my (@pseudoheaders); - - while ( my $line = shift @{$lines} ) { - next if $line =~ /^\s*?$/; - if ( $line =~ /^RT-/i ) { - - push ( @pseudoheaders, $line ); - } - - #If we find a line that's not a command, get out. - else { - unshift ( @{$lines}, $line ); - last; - } - } - - return (@pseudoheaders); - -} - -# }}} - -# {{{ sub ActOnPseudoHeaders - -=item ActOnPseudoHeaders $PseudoHeaders - -Takes a string of pseudo-headers, iterates through them and does what they tell it to. - -=cut - -sub ActOnPseudoHeaders { - my $CurrentUser = shift; - my (@actions) = (@_); - - my $ResultsMessage = ''; - my $Ticket = RT::Ticket->new($CurrentUser); - - foreach my $action (@actions) { - my ($val); - my $msg = ''; - - $ResultsMessage .= ">>> $action\n"; - - if ( $action =~ /^RT-(.*?):\s*(.*)$/i ) { - my $command = $1; - my $args = $2; - - if ( $command =~ /^ticket$/i ) { - - $val = $Ticket->Load($args); - unless ($val) { - $ResultsMessage .= - loc("ERROR: Couldn't load ticket '[_1]': [_2].\n", $1, $msg); - . loc("Aborting to avoid unintended ticket modifications.\n") - . loc("The following commands were not proccessed:\n\n") - . join ( "\n", @actions ); - return ($ResultsMessage); - } - $ResultsMessage .= loc("Ticket [_1] loaded\n", $Ticket->Id); - } - else { - unless ( $Ticket->Id ) { - $ResultsMessage .= loc("No Ticket specified. Aborting ticket ") - . loc("modifications\n\n") - . loc("The following commands were not proccessed:\n\n") - . join ( "\n", @actions ); - return ($ResultsMessage); - } - - # Deal with the basics - if ( $command =~ /^(Subject|Owner|Status|Queue)$/i ) { - my $method = 'Set' . ucfirst( lc($1) ); - ( $val, $msg ) = $Ticket->$method($args); - } - - # Deal with the dates - elsif ( $command =~ /^(due|starts|started|resolved)$/i ) { - my $method = 'Set' . ucfirst( lc($1) ); - my $date = new RT::Date($CurrentUser); - $date->Set( Format => 'unknown', Value => $args ); - ( $val, $msg ) = $Ticket->$method( $date->ISO ); - } - - # Deal with the watchers - elsif ( $command =~ /^(requestor|requestors|cc|admincc)$/i ) { - my $operator = "+"; - my ($type); - if ( $args =~ /^(\+|\-)(.*)$/ ) { - $operator = $1; - $args = $2; - } - $type = 'Requestor' if ( $command =~ /^requestor/i ); - $type = 'Cc' if ( $command =~ /^cc/i ); - $type = 'AdminCc' if ( $command =~ /^admincc/i ); - - my $user = RT::User->new($CurrentUser); - $user->Load($args); - - if ($operator eq '+') { - ($val, $msg) = $Ticket->AddWatcher( Type => $type, - PrincipalId => $user->PrincipalId); - } elsif ($operator eq '-') { - ($val, $msg) = $Ticket->DeleteWatcher( Type => $type, - PrincipalId => $user->PrincipalId); - } - - } - $ResultsMessage .= $msg . "\n"; - } - - } - return ($ResultsMessage); - -} - -# }}} - -# {{{ sub untaint -sub untaint { - my $val = shift; - - if ( $val =~ /^([-\#\/\w.]+)$/ ) { - $val = $1; # $data now untainted - } - else { - die loc("Bad data in [_1]", $val); # log this somewhere - } - return ($val); -} - -# }}} - -=head1 AUTHOR - - - - rt-commit-handler is a rewritten version of the NetBSD commit handler, - which was placed in the public domain by Charles Hannum. It bore the following - authors statement: - - Contributed by David Hampton - Hacked greatly by Greg A. Woods - Rewritten by Charles M. Hannum - -=cut - diff --git a/rt/bin/rt-crontool b/rt/bin/rt-crontool deleted file mode 100644 index cdbc3cbc9..000000000 --- a/rt/bin/rt-crontool +++ /dev/null @@ -1,220 +0,0 @@ -#!/usr/bin/perl -# BEGIN LICENSE BLOCK -# -# Copyright (c) 1996-2003 Jesse Vincent -# -# (Except where explictly superceded by other copyright notices) -# -# This work is made available to you under the terms of Version 2 of -# the GNU General Public License. A copy of that license should have -# been provided with this software, but in any event can be snarfed -# from www.gnu.org. -# -# This work 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. -# -# Unless otherwise specified, all modifications, corrections or -# extensions to this work which alter its source code become the -# property of Best Practical Solutions, LLC when submitted for -# inclusion in the work. -# -# -# END LICENSE BLOCK - -use strict; -use Carp; - -use lib ("/opt/rt3/lib", "/opt/rt3/local/lib"); - -package RT; - -use Getopt::Long; - -use RT::Interface::CLI qw(CleanEnv GetCurrentUser GetMessageContent loc); -use RT::Tickets; -use RT::Template; - -#Clean out all the nasties from the environment -CleanEnv(); - -# Load the config file -RT::LoadConfig(); - -#Connect to the database and get RT::SystemUser and RT::Nobody loaded -RT::Init(); - -#Drop setgid permissions -RT::DropSetGIDPermissions(); - -#Get the current user all loaded -my $CurrentUser = GetCurrentUser(); - -unless ( $CurrentUser->Id ) { - print loc("No RT user found. Please consult your RT administrator.\n"); - exit(1); -} - -my ( $search, $condition, $action, $search_arg, $condition_arg, $action_arg, - $template_id, $help, $verbose ); -GetOptions( "search=s" => \$search, - "search-arg=s" => \$search_arg, - "condition=s" => \$condition, - "condition-arg=s" => \$condition_arg, - "action-arg=s" => \$action_arg, - "action=s" => \$action, - "template-id=s" => \$template_id, - "help" => \$help, - "verbose|v" => \$verbose ); - -help() if $help; - -# We _must_ have a search object -load_module($search); -load_module($action) if ($action); -load_module($condition) if ($condition); - -# load template if specified -my $template_obj; -if ($template_id) { - $template_obj = RT::Template->new($RT::Nobody); - $template_obj->LoadById($template_id); -} - -#At the appointed time: - -#find a bunch of tickets -my $tickets = RT::Tickets->new($CurrentUser); -my $search = $search->new( TicketsObj => $tickets, Argument => $search_arg ); - -$search->Prepare(); - -# TicketsFound is an RT::Tickets object -my $tickets = $search->TicketsObj; - -#for each ticket we've found -while ( my $ticket = $tickets->Next() ) { - print "\n" . $ticket->Id() . ": " if ($verbose); - - # perform some more advanced check - if ($condition) { - my $condition_obj = $condition->new( TicketObj => $ticket, - Argument => $condition_arg ); - - # if the condition doesn't apply, get out of here - - next unless ( $condition_obj->IsApplicable ); - print loc("Condition matches...") if ($verbose); - } - - #prepare our action - my $action_obj = $action->new( TicketObj => $ticket, - TemplateObj => $template_obj, - Argument => $action_arg ); - - #if our preparation, move onto the next ticket - next unless ( $action_obj->Prepare ); - print loc("Action prepared...") if ($verbose); - - #commit our action. - next unless ( $action_obj->Commit ); - print loc("Action committed.") if ($verbose); -} - -# {{{ load_module - -=head2 load_module - -Loads a perl module, dying nicely if it can't find it. - -=cut - -sub load_module { - my $modname = shift; - eval "require $modname"; - if ($@) { - die loc( "Failed to load module [_1]. ([_2])", $modname, $@ ); - } - -} - -# }}} - -# {{{ loc - -=head2 loc LIST - -Localize this string, with the current user's currentuser object - -=cut - -sub loc { - $CurrentUser->loc(@_); -} - -# }}} - -sub help { - - print loc( "[_1] is a tool to act on tickets from an external scheduling tool, such as cron.", $0 ) - . "\n"; - print loc("It takes several arguments:") . "\n\n"; - - print " " - . loc( "[_1] - Specify the search module you want to use", "--search" ) - . "\n"; - print " " - . loc( "[_1] - An argument to pass to [_2]", "--search-argument", "--search" ) - . "\n"; - - print " " - . loc( "[_1] - Specify the condition module you want to use", "--condition" ) - . "\n"; - print " " - . loc( "[_1] - An argument to pass to [_2]", "--condition-argument", "--condition" ) - . "\n"; - print " " - . loc( "[_1] - Specify the action module you want to use", "--action" ) - . "\n"; - print " " - . loc( "[_1] - An argument to pass to [_2]", "--action-argument", "--action" ) - . "\n"; - print " " - . loc( "[_1] - Output status updates to STDOUT", "--verbose" ) . "\n"; - print "\n"; - print "\n"; - print loc("Security:")."\n"; - print loc("This tool allows the user to run arbitrary perl modules from within RT.")." ". - loc("If this tool were setgid, a hostile local user could use this tool to gain administrative access to RT.")." ". - loc("It is incredibly important that nonprivileged users not be allowed to run this tool."). " " . - loc("It is suggested that you create a non-privileged unix user with the correct group membership and RT access to run this tool.")."\n"; - print "\n"; - print loc("Example:"); - print "\n"; - print " " - . loc( "The following command will find all active tickets in the queue 'general' and set their priority to 99 if they haven't been touched in 4 hours:" - ) - . "\n\n"; - - print " bin/rt-cron-tool \\\n"; - print - " --search RT::Search::ActiveTicketsInQueue --search-arg general \\\n"; - print - " --condition RT::Condition::UntouchedInHours --condition-arg 4 \\\n"; - print " --action RT::Action::SetPriority --action-arg 99 \\\n"; - print " --verbose\n"; - - print "\n"; - print loc("Escalate tickets"); - print "rt-crontool \\\n"; - print " --search RT::Search::ActiveTicketsInQueue --search-arg thequeuename \\\n"; - print " --action RT::Action::EscalatePriority \\\n"; - - - - - - - exit(0); -} diff --git a/rt/bin/rt-crontool.in b/rt/bin/rt-crontool.in deleted file mode 100644 index 8ecc71826..000000000 --- a/rt/bin/rt-crontool.in +++ /dev/null @@ -1,220 +0,0 @@ -#!@PERL@ -# BEGIN LICENSE BLOCK -# -# Copyright (c) 1996-2003 Jesse Vincent -# -# (Except where explictly superceded by other copyright notices) -# -# This work is made available to you under the terms of Version 2 of -# the GNU General Public License. A copy of that license should have -# been provided with this software, but in any event can be snarfed -# from www.gnu.org. -# -# This work 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. -# -# Unless otherwise specified, all modifications, corrections or -# extensions to this work which alter its source code become the -# property of Best Practical Solutions, LLC when submitted for -# inclusion in the work. -# -# -# END LICENSE BLOCK - -use strict; -use Carp; - -use lib ("@RT_LIB_PATH@", "@LOCAL_LIB_PATH@"); - -package RT; - -use Getopt::Long; - -use RT::Interface::CLI qw(CleanEnv GetCurrentUser GetMessageContent loc); -use RT::Tickets; -use RT::Template; - -#Clean out all the nasties from the environment -CleanEnv(); - -# Load the config file -RT::LoadConfig(); - -#Connect to the database and get RT::SystemUser and RT::Nobody loaded -RT::Init(); - -#Drop setgid permissions -RT::DropSetGIDPermissions(); - -#Get the current user all loaded -my $CurrentUser = GetCurrentUser(); - -unless ( $CurrentUser->Id ) { - print loc("No RT user found. Please consult your RT administrator.\n"); - exit(1); -} - -my ( $search, $condition, $action, $search_arg, $condition_arg, $action_arg, - $template_id, $help, $verbose ); -GetOptions( "search=s" => \$search, - "search-arg=s" => \$search_arg, - "condition=s" => \$condition, - "condition-arg=s" => \$condition_arg, - "action-arg=s" => \$action_arg, - "action=s" => \$action, - "template-id=s" => \$template_id, - "help" => \$help, - "verbose|v" => \$verbose ); - -help() if $help; - -# We _must_ have a search object -load_module($search); -load_module($action) if ($action); -load_module($condition) if ($condition); - -# load template if specified -my $template_obj; -if ($template_id) { - $template_obj = RT::Template->new($RT::Nobody); - $template_obj->LoadById($template_id); -} - -#At the appointed time: - -#find a bunch of tickets -my $tickets = RT::Tickets->new($CurrentUser); -my $search = $search->new( TicketsObj => $tickets, Argument => $search_arg ); - -$search->Prepare(); - -# TicketsFound is an RT::Tickets object -my $tickets = $search->TicketsObj; - -#for each ticket we've found -while ( my $ticket = $tickets->Next() ) { - print "\n" . $ticket->Id() . ": " if ($verbose); - - # perform some more advanced check - if ($condition) { - my $condition_obj = $condition->new( TicketObj => $ticket, - Argument => $condition_arg ); - - # if the condition doesn't apply, get out of here - - next unless ( $condition_obj->IsApplicable ); - print loc("Condition matches...") if ($verbose); - } - - #prepare our action - my $action_obj = $action->new( TicketObj => $ticket, - TemplateObj => $template_obj, - Argument => $action_arg ); - - #if our preparation, move onto the next ticket - next unless ( $action_obj->Prepare ); - print loc("Action prepared...") if ($verbose); - - #commit our action. - next unless ( $action_obj->Commit ); - print loc("Action committed.") if ($verbose); -} - -# {{{ load_module - -=head2 load_module - -Loads a perl module, dying nicely if it can't find it. - -=cut - -sub load_module { - my $modname = shift; - eval "require $modname"; - if ($@) { - die loc( "Failed to load module [_1]. ([_2])", $modname, $@ ); - } - -} - -# }}} - -# {{{ loc - -=head2 loc LIST - -Localize this string, with the current user's currentuser object - -=cut - -sub loc { - $CurrentUser->loc(@_); -} - -# }}} - -sub help { - - print loc( "[_1] is a tool to act on tickets from an external scheduling tool, such as cron.", $0 ) - . "\n"; - print loc("It takes several arguments:") . "\n\n"; - - print " " - . loc( "[_1] - Specify the search module you want to use", "--search" ) - . "\n"; - print " " - . loc( "[_1] - An argument to pass to [_2]", "--search-argument", "--search" ) - . "\n"; - - print " " - . loc( "[_1] - Specify the condition module you want to use", "--condition" ) - . "\n"; - print " " - . loc( "[_1] - An argument to pass to [_2]", "--condition-argument", "--condition" ) - . "\n"; - print " " - . loc( "[_1] - Specify the action module you want to use", "--action" ) - . "\n"; - print " " - . loc( "[_1] - An argument to pass to [_2]", "--action-argument", "--action" ) - . "\n"; - print " " - . loc( "[_1] - Output status updates to STDOUT", "--verbose" ) . "\n"; - print "\n"; - print "\n"; - print loc("Security:")."\n"; - print loc("This tool allows the user to run arbitrary perl modules from within RT.")." ". - loc("If this tool were setgid, a hostile local user could use this tool to gain administrative access to RT.")." ". - loc("It is incredibly important that nonprivileged users not be allowed to run this tool."). " " . - loc("It is suggested that you create a non-privileged unix user with the correct group membership and RT access to run this tool.")."\n"; - print "\n"; - print loc("Example:"); - print "\n"; - print " " - . loc( "The following command will find all active tickets in the queue 'general' and set their priority to 99 if they haven't been touched in 4 hours:" - ) - . "\n\n"; - - print " bin/rt-cron-tool \\\n"; - print - " --search RT::Search::ActiveTicketsInQueue --search-arg general \\\n"; - print - " --condition RT::Condition::UntouchedInHours --condition-arg 4 \\\n"; - print " --action RT::Action::SetPriority --action-arg 99 \\\n"; - print " --verbose\n"; - - print "\n"; - print loc("Escalate tickets"); - print "rt-crontool \\\n"; - print " --search RT::Search::ActiveTicketsInQueue --search-arg thequeuename \\\n"; - print " --action RT::Action::EscalatePriority \\\n"; - - - - - - - exit(0); -} diff --git a/rt/bin/rt-mailgate b/rt/bin/rt-mailgate deleted file mode 100755 index b30443638..000000000 --- a/rt/bin/rt-mailgate +++ /dev/null @@ -1,587 +0,0 @@ -#!/usr/bin/perl -w -# BEGIN LICENSE BLOCK -# -# Copyright (c) 1996-2003 Jesse Vincent -# -# (Except where explictly superceded by other copyright notices) -# -# This work is made available to you under the terms of Version 2 of -# the GNU General Public License. A copy of that license should have -# been provided with this software, but in any event can be snarfed -# from www.gnu.org. -# -# This work 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. -# -# Unless otherwise specified, all modifications, corrections or -# extensions to this work which alter its source code become the -# property of Best Practical Solutions, LLC when submitted for -# inclusion in the work. -# -# -# END LICENSE BLOCK - -=head1 NAME - -rt-mailgate - Mail interface to RT3. - -=begin testing - -use RT::I18N; - - -# {{{ Test new ticket creation by root who is privileged and superuser - -ok(open(MAIL, "|/opt/rt3/bin/rt-mailgate --url http://localhost/ --queue general --action correspond"), "Opened the mailgate - $@"); -print MAIL <new($RT::SystemUser); -$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC'); -$tickets->Limit(FIELD => 'id', OPERATOR => '>', VALUE => '0'); -my $tick = $tickets->First(); -ok (UNIVERSAL::isa($tick,'RT::Ticket')); -ok ($tick->Id, "found ticket ".$tick->Id); -ok ($tick->Subject eq 'This is a test of new ticket creation', "Created the ticket"); - -# }}} - - -# {{{This is a test of new ticket creation as an unknown user - -ok(open(MAIL, "|/opt/rt3/bin/rt-mailgate --url http://localhost/ --queue general --action correspond"), "Opened the mailgate - $@"); -print MAIL <new($RT::SystemUser); -$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC'); -$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0'); -$tick = $tickets->First(); -ok ($tick->Id, "found ticket ".$tick->Id); -ok ($tick->Subject ne 'This is a test of new ticket creation as an unknown user', "failed to create the new ticket from an unprivileged account"); -my $u = RT::User->new($RT::SystemUser); -$u->Load('doesnotexist@example.com'); -ok( $u->Id == 0, " user does not exist and was not created by failed ticket submission"); - - -# }}} - -# {{{ now everybody can create tickets. can a random unkown user create tickets? - -my $g = RT::Group->new($RT::SystemUser); -$g->LoadSystemInternalGroup('Everyone'); -ok( $g->Id, "Found 'everybody'"); - -my ($val,$msg) = $g->PrincipalObj->GrantRight(Right => 'CreateTicket'); -ok ($val, "Granted everybody the right to create tickets - $msg"); - -sleep(60); # gotta sleep so the remote process' ACL cache times out - -ok(open(MAIL, "|/opt/rt3/bin/rt-mailgate --url http://localhost/ --queue general --action correspond"), "Opened the mailgate - $@"); -print MAIL <new($RT::SystemUser); -$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC'); -$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0'); -$tick = $tickets->First(); -ok ($tick->Id, "found ticket ".$tick->Id); -ok ($tick->Subject eq 'This is a test of new ticket creation as an unknown user', "failed to create the new ticket from an unprivileged account"); -my $u = RT::User->new($RT::SystemUser); -$u->Load('doesnotexist@example.com'); -ok( $u->Id != 0, " user does not exist and was created by ticket submission"); - -# }}} - - -# {{{ can another random reply to a ticket without being granted privs? answer should be no. - - -#($val,$msg) = $g->PrincipalObj->GrantRight(Right => 'CreateTicket'); -#ok ($val, "Granted everybody the right to create tickets - $msg"); -#sleep(60); # gotta sleep so the remote process' ACL cache times out - -ok(open(MAIL, "|/opt/rt3/bin/rt-mailgate --url http://localhost/ --queue general --action correspond"), "Opened the mailgate - $@"); -print MAIL <Id]}] This is a test of a reply as an unknown user - -Blah! -Foob! -EOF -close (MAIL); - -$u = RT::User->new($RT::SystemUser); -$u->Load('doesnotexist-2@example.com'); -ok( $u->Id == 0, " user does not exist and was not created by ticket correspondence submission"); -# }}} -# {{{ can another random reply to a ticket after being granted privs? answer should be yes - - -($val,$msg) = $g->PrincipalObj->GrantRight(Right => 'ReplyToTicket'); -ok ($val, "Granted everybody the right to reply to tickets - $msg"); -sleep(60); # gotta sleep so the remote process' ACL cache times out - -ok(open(MAIL, "|/opt/rt3/bin/rt-mailgate --url http://localhost/ --queue general --action correspond"), "Opened the mailgate - $@"); -print MAIL <Id]}] This is a test of a reply as an unknown user - -Blah! -Foob! -EOF -close (MAIL); - - -$u = RT::User->new($RT::SystemUser); -$u->Load('doesnotexist-2@example.com'); -ok( $u->Id != 0, " user exists and was created by ticket correspondence submission"); - -# }}} - -# {{{ can another random comment on a ticket without being granted privs? answer should be no. - - -#($val,$msg) = $g->PrincipalObj->GrantRight(Right => 'CreateTicket'); -#ok ($val, "Granted everybody the right to create tickets - $msg"); -#sleep(60); # gotta sleep so the remote process' ACL cache times out - -ok(open(MAIL, "|/opt/rt3/bin/rt-mailgate --url http://localhost/ --queue general --action comment"), "Opened the mailgate - $@"); -print MAIL <Id]}] This is a test of a comment as an unknown user - -Blah! -Foob! -EOF -close (MAIL); - -$u = RT::User->new($RT::SystemUser); -$u->Load('doesnotexist-3@example.com'); -ok( $u->Id == 0, " user does not exist and was not created by ticket comment submission"); - -# }}} -# {{{ can another random reply to a ticket after being granted privs? answer should be yes - - -($val,$msg) = $g->PrincipalObj->GrantRight(Right => 'CommentOnTicket'); -ok ($val, "Granted everybody the right to reply to tickets - $msg"); -sleep(60); # gotta sleep so the remote process' ACL cache times out - -ok(open(MAIL, "|/opt/rt3/bin/rt-mailgate --url http://localhost/ --queue general --action comment"), "Opened the mailgate - $@"); -print MAIL <Id]}] This is a test of a comment as an unknown user - -Blah! -Foob! -EOF -close (MAIL); - - -$u = RT::User->new($RT::SystemUser); -$u->Load('doesnotexist-3@example.com'); -ok( $u->Id != 0, " user exists and was created by ticket comment submission"); - -# }}} - -# {{{ Testing preservation of binary attachments - -# Get a binary blob (Best Practical logo) - -# Create a mime entity with an attachment - -use MIME::Entity; -my $entity = MIME::Entity->build( From => 'root@localhost', - To => 'rt@localhost', - Subject => 'binary attachment test', - Data => ['This is a test of a binary attachment']); - -# currently in lib/t/autogen -$entity->attach(Path => '../../../html/NoAuth/images/spacer.gif', - Type => 'image/gif', - Encoding => 'base64'); - -# Create a ticket with a binary attachment -ok(open(MAIL, "|/opt/rt3/bin/rt-mailgate --url http://localhost/ --queue general --action correspond"), "Opened the mailgate - $@"); - -$entity->print(\*MAIL); - -close (MAIL); - -my $tickets = RT::Tickets->new($RT::SystemUser); -$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC'); -$tickets->Limit(FIELD => 'id', OPERATOR => '>', VALUE => '0'); - $tick = $tickets->First(); -ok (UNIVERSAL::isa($tick,'RT::Ticket')); -ok ($tick->Id, "found ticket ".$tick->Id); -ok ($tick->Subject eq 'binary attachment test', "Created the ticket - ".$tick->Id); - -my $file = `cat ../../../html/NoAuth/images/spacer.gif`; -ok ($file, "Read in the logo image"); - - - use Digest::MD5; -warn "for the raw file the content is ".Digest::MD5::md5_base64($file); - - - -# Verify that the binary attachment is valid in the database -my $attachments = RT::Attachments->new($RT::SystemUser); -$attachments->Limit(FIELD => 'ContentType', VALUE => 'image/gif'); -ok ($attachments->Count == 1, 'Found only one gif in the database'); -my $attachment = $attachments->First; -my $acontent = $attachment->Content; - - warn "coming from the database, the content is ".Digest::MD5::md5_base64($acontent); - -is( $acontent, $file, 'The attachment isn\'t screwed up in the database.'); -# Log in as root -use Getopt::Long; -use LWP::UserAgent; - - -# Grab the binary attachment via the web ui -my $ua = LWP::UserAgent->new(); - -my $full_url = "http://localhost/Ticket/Attachment/".$attachment->TransactionId."/".$attachment->id."/spacer.gif?&user=root&pass=password"; -my $r = $ua->get( $full_url); - - -# Verify that the downloaded attachment is the same as what we uploaded. -is($file, $r->content, 'The attachment isn\'t screwed up in download'); - - - -# }}} - -# {{{ Simple I18N testing - -ok(open(MAIL, "|/opt/rt3/bin/rt-mailgate --url http://localhost/ --queue general --action correspond"), "Opened the mailgate - $@"); - -print MAIL <new($RT::SystemUser); -$unitickets->OrderBy(FIELD => 'id', ORDER => 'DESC'); -$unitickets->Limit(FIELD => 'id', OPERATOR => '>', VALUE => '0'); -my $unitick = $unitickets->First(); -ok (UNIVERSAL::isa($unitick,'RT::Ticket')); -ok ($unitick->Id, "found ticket ".$unitick->Id); -ok ($unitick->Subject eq 'This is a test of I18N ticket creation', "Created the ticket - ". $unitick->Subject); - - - -my $unistring = "\303\241\303\251\303\255\303\263\303\272"; -Encode::_utf8_on($unistring); -is ($unitick->Transactions->First->Content, $unitick->Transactions->First->Attachments->First->Content, "Content is ". $unitick->Transactions->First->Attachments->First->Content); -ok($unitick->Transactions->First->Attachments->First->Content =~ /$unistring/i, $unitick->Id." appears to be unicode ". $unitick->Transactions->First->Attachments->First->Id); -# supposedly I18N fails on the second message sent in. - -ok(open(MAIL, "|/opt/rt3/bin/rt-mailgate --url http://localhost/ --queue general --action correspond"), "Opened the mailgate - $@"); - -print MAIL <new($RT::SystemUser); -$tickets2->OrderBy(FIELD => 'id', ORDER => 'DESC'); -$tickets2->Limit(FIELD => 'id', OPERATOR => '>', VALUE => '0'); -my $tick2 = $tickets2->First(); -ok (UNIVERSAL::isa($tick2,'RT::Ticket')); -ok ($tick2->Id, "found ticket ".$tick2->Id); -ok ($tick2->Subject eq 'This is a test of I18N ticket creation', "Created the ticket"); - - - -my $unistring = "\303\241\303\251\303\255\303\263\303\272"; -Encode::_utf8_on($unistring); - -ok ($tick2->Transactions->First->Content =~ $unistring, "It appears to be unicode - ".$tick2->Transactions->First->Content); - -# }}} - - -($val,$msg) = $g->PrincipalObj->RevokeRight(Right => 'CreateTicket'); -ok ($val, $msg); - - - -=end testing - -=cut - - -use strict; -use Getopt::Long; -use LWP::UserAgent; - -use constant EX_TEMPFAIL => 75; - -my %opts; -GetOptions( \%opts, "queue=s", "action=s", "url=s", "jar=s", "help", "debug", "extension=s" ); - -if ( $opts{help} ) { - require Pod::Usage; - import Pod::Usage; - pod2usage("RT Mail Gateway\n"); - exit 1; # Don't want to succeed if this is really an email! -} - -for (qw(url)) { - die "$0 invoked improperly\n\nNo $_ provided to mail gateway!\n" unless $opts{$_}; -} - -undef $/; -my $message = <>; -my $ua = LWP::UserAgent->new(); -$ua->cookie_jar( { file => $opts{jar} } ); - -my %args = ( - queue => $opts{queue}, - action => $opts{action}, - message => $message, - SessionType => 'REST', # Surpress login box -); - - -if ($opts{'extension'}) { - $args{$opts{'extension'}} = $ENV{'EXTENSION'}; -} - -# Set up cookie here. - -my $full_url = $opts{'url'}. "/REST/1.0/NoAuth/mail-gateway"; -warn "Connecting to $full_url" if $opts{'debug'}; - - - -my $r = $ua->post( $full_url, {%args} ); -check_failure($r); - -my $content = $r->content; -warn $content if ($opts{debug}); - -if ( $content !~ /^(ok|not ok)/ ) { - - # It's not the server's fault if the mail is bogus. We just want to know that - # *something* came out of the server. - die <is_success(); - - # This ordinarily oughtn't to be able to happen, suggests a bug in RT. - # So only load these heavy modules when they're needed. - require HTML::TreeBuilder; - require HTML::FormatText; - - my $error = $r->error_as_HTML; - my $tree = HTML::TreeBuilder->new->parse($error); - $tree->eof; - - # It'll be a cold day in hell before RT sends out bounces in HTML - my $formatter = HTML::FormatText->new( leftmargin => 0, - rightmargin => 50 ); - warn $formatter->format($tree); - warn "This is $0 exiting because of an undefined server error" if ($opts{debug}); - exit EX_TEMPFAIL; -} - - -=head1 SYNOPSIS - - rt-mailgate --help : this text - -Usual invocation (from MTA): - - rt-mailgate --action (correspond|comment) --queue queuename - --url http://your.rt.server/ - [ --extension (queue|action|ticket) - -See C for more. - -=head1 OPTIONS - -=over 3 - -=item C<--action> - -Specifies whether this is a correspondence or comment address. - -=item C<--queue> - -Reflects which queue this address handles. - -=item C<--url> - -The location of the web server for your RT instance. - - -=item C<--extension> OPTIONAL - -Some MTAs will route mail sent to user-foo@host or user+foo@host to user@host -and present "foo" in the environment variable $EXTENSION. By specifying -the value "queue" for this parameter, the queue this message should be -submitted to will be set to the value of $EXTENSION. By specifying -"ticket", $EXTENSION will be interpreted as the id of the ticket this message -is related to. "action" will allow the user to specify either "comment" or -"correspond" in the address extension. - - -=head1 DESCRIPTION - -The RT mail gateway is the primary mechanism for communicating with RT -via email. This program simply directs the email to the RT web server, -which handles filing correspondence and sending out any required mail. -It is designed to be run as part of the mail delivery process, either -called directly by the MTA or C, or in a F<.forward> or -equivalent. - -=head1 SETUP - -Much of the set up of the mail gateway depends on your MTA and mail -routing configuration. However, you will need first of all to create an -RT user for the mail gateway and assign it a password; this helps to -ensure that mail coming into the web server did originate from the -gateway. - -Next, you need to route mail to C for the queues you're -monitoring. For instance, if you're using F and you have a -"bugs" queue, you will want something like this: - - bugs: "|/opt/rt3/bin/rt-mailgate --queue bugs --action correspond - --url http://rt.mycorp.com/" - - bugs-comment: "|/opt/rt3/bin/rt-mailgate --queue bugs --action comment - --url http://rt.mycorp.com/" - -Note that you don't have to run your RT server on your mail server, as -the mail gateway will happily relay to a different machine. - -=head1 CUSTOMIZATION - -By default, the mail gateway will accept mail from anyone. However, -there are situations in which you will want to authenticate users -before allowing them to communicate with the system. You can do this -via a plug-in mechanism in the RT configuration. - -You can set the array C<@RT::MailPlugins> to be a list of plugins. The -default plugin, if this is not given, is C - that is, -authentication of the person is done based on the C header of the -email. If you have additional filters or authentication mechanisms, you -can list them here and they will be called in order: - - @RT::MailPlugins = ( - "Filter::SpamAssassin", - "Auth::LDAP", - # ... - ); - -See the documentation for any additional plugins you have. - -You may also put Perl subroutines into the C<@RT::MailPlugins> array, if -they behave as described below. - -=head1 WRITING PLUGINS - -What's actually going on in the above is that C<@RT::MailPlugins> is a -list of Perl modules; RT prepends C to the name, -to form a package name, and then C's this module. The module is -expected to provide a C subroutine, which takes a hash of -several parameters: - -=over 4 - -=item Message - -A C object representing the email -=item CurrentUser - -An C object - -=item AuthStat - -The authentication level returned from the previous plugin. - -=item Ticket [OPTIONAL] - -The ticket under discussion - -=item Queue [OPTIONAL] - -If we don't already have a ticket id, we need to know which queue we're talking about - -=item Action - -The action being performed. At the moment, it's one of "comment" or "correspond" - -=back 4 - -It returns two values, the new C object, and the new -authentication level. The authentication level can be zero, not allowed -to communicate with RT at all, (a "permission denied" error is mailed to -the correspondent) or one, which is the normal mode of operation. -Additionally, if C<-1> is returned, then the processing of the plug-ins -stops immediately and the message is ignored. - -=cut - diff --git a/rt/bin/rt-mailgate.in b/rt/bin/rt-mailgate.in deleted file mode 100644 index 2ddb604ec..000000000 --- a/rt/bin/rt-mailgate.in +++ /dev/null @@ -1,648 +0,0 @@ -#!@PERL@ -w -# BEGIN LICENSE BLOCK -# -# Copyright (c) 1996-2003 Jesse Vincent -# -# (Except where explictly superceded by other copyright notices) -# -# This work is made available to you under the terms of Version 2 of -# the GNU General Public License. A copy of that license should have -# been provided with this software, but in any event can be snarfed -# from www.gnu.org. -# -# This work 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. -# -# Unless otherwise specified, all modifications, corrections or -# extensions to this work which alter its source code become the -# property of Best Practical Solutions, LLC when submitted for -# inclusion in the work. -# -# -# END LICENSE BLOCK - -=head1 NAME - -rt-mailgate - Mail interface to RT3. - -=begin testing - -use RT::I18N; - -# Make sure that when we call the mailgate wrong, it tempfails - -ok(open(MAIL, "|@RT_BIN_PATH@/rt-mailgate --url http://bad.address"), "Opened the mailgate - The error below is expected - $@"); -print MAIL <> 8, 75, "The error message above is expected The mail gateway exited with a failure. yay"); - - -# {{{ Test new ticket creation by root who is privileged and superuser - -ok(open(MAIL, "|@RT_BIN_PATH@/rt-mailgate --url http://localhost".$RT::WebPath."/ --queue general --action correspond"), "Opened the mailgate - $@"); -print MAIL <> 8, 0, "The mail gateway exited normally. yay"); - -use RT::Tickets; -my $tickets = RT::Tickets->new($RT::SystemUser); -$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC'); -$tickets->Limit(FIELD => 'id', OPERATOR => '>', VALUE => '0'); -my $tick = $tickets->First(); -ok (UNIVERSAL::isa($tick,'RT::Ticket')); -ok ($tick->Id, "found ticket ".$tick->Id); -ok ($tick->Subject eq 'This is a test of new ticket creation', "Created the ticket"); - -# }}} - - -# {{{This is a test of new ticket creation as an unknown user - -ok(open(MAIL, "|@RT_BIN_PATH@/rt-mailgate --url http://localhost".$RT::WebPath."/ --queue general --action correspond"), "Opened the mailgate - $@"); -print MAIL <> 8, 0, "The mail gateway exited normally. yay"); - -$tickets = RT::Tickets->new($RT::SystemUser); -$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC'); -$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0'); -$tick = $tickets->First(); -ok ($tick->Id, "found ticket ".$tick->Id); -ok ($tick->Subject ne 'This is a test of new ticket creation as an unknown user', "failed to create the new ticket from an unprivileged account"); -my $u = RT::User->new($RT::SystemUser); -$u->Load('doesnotexist@example.com'); -ok( $u->Id == 0, " user does not exist and was not created by failed ticket submission"); - - -# }}} - -# {{{ now everybody can create tickets. can a random unkown user create tickets? - -my $g = RT::Group->new($RT::SystemUser); -$g->LoadSystemInternalGroup('Everyone'); -ok( $g->Id, "Found 'everybody'"); - -my ($val,$msg) = $g->PrincipalObj->GrantRight(Right => 'CreateTicket'); -ok ($val, "Granted everybody the right to create tickets - $msg"); - -sleep(60); # gotta sleep so the remote process' ACL cache times out - -ok(open(MAIL, "|@RT_BIN_PATH@/rt-mailgate --url http://localhost".$RT::WebPath."/ --queue general --action correspond"), "Opened the mailgate - $@"); -print MAIL <> 8, 0, "The mail gateway exited normally. yay"); - - -$tickets = RT::Tickets->new($RT::SystemUser); -$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC'); -$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0'); -$tick = $tickets->First(); -ok ($tick->Id, "found ticket ".$tick->Id); -ok ($tick->Subject eq 'This is a test of new ticket creation as an unknown user', "failed to create the new ticket from an unprivileged account"); -my $u = RT::User->new($RT::SystemUser); -$u->Load('doesnotexist@example.com'); -ok( $u->Id != 0, " user does not exist and was created by ticket submission"); - -# }}} - - -# {{{ can another random reply to a ticket without being granted privs? answer should be no. - - -#($val,$msg) = $g->PrincipalObj->GrantRight(Right => 'CreateTicket'); -#ok ($val, "Granted everybody the right to create tickets - $msg"); -#sleep(60); # gotta sleep so the remote process' ACL cache times out - -ok(open(MAIL, "|@RT_BIN_PATH@/rt-mailgate --url http://localhost".$RT::WebPath."/ --queue general --action correspond"), "Opened the mailgate - $@"); -print MAIL <Id]}] This is a test of a reply as an unknown user - -Blah! -Foob! -EOF -close (MAIL); -#Check the return value -is ($? >> 8, 0, "The mail gateway exited normally. yay"); - -$u = RT::User->new($RT::SystemUser); -$u->Load('doesnotexist-2@example.com'); -ok( $u->Id == 0, " user does not exist and was not created by ticket correspondence submission"); -# }}} -# {{{ can another random reply to a ticket after being granted privs? answer should be yes - - -($val,$msg) = $g->PrincipalObj->GrantRight(Right => 'ReplyToTicket'); -ok ($val, "Granted everybody the right to reply to tickets - $msg"); -sleep(60); # gotta sleep so the remote process' ACL cache times out - -ok(open(MAIL, "|@RT_BIN_PATH@/rt-mailgate --url http://localhost".$RT::WebPath."/ --queue general --action correspond"), "Opened the mailgate - $@"); -print MAIL <Id]}] This is a test of a reply as an unknown user - -Blah! -Foob! -EOF -close (MAIL); -#Check the return value -is ($? >> 8, 0, "The mail gateway exited normally. yay"); - - -$u = RT::User->new($RT::SystemUser); -$u->Load('doesnotexist-2@example.com'); -ok( $u->Id != 0, " user exists and was created by ticket correspondence submission"); - -# }}} - -# {{{ can another random comment on a ticket without being granted privs? answer should be no. - - -#($val,$msg) = $g->PrincipalObj->GrantRight(Right => 'CreateTicket'); -#ok ($val, "Granted everybody the right to create tickets - $msg"); -#sleep(60); # gotta sleep so the remote process' ACL cache times out - -ok(open(MAIL, "|@RT_BIN_PATH@/rt-mailgate --url http://localhost".$RT::WebPath."/ --queue general --action comment"), "Opened the mailgate - $@"); -print MAIL <Id]}] This is a test of a comment as an unknown user - -Blah! -Foob! -EOF -close (MAIL); - -#Check the return value -is ($? >> 8, 0, "The mail gateway exited normally. yay"); - -$u = RT::User->new($RT::SystemUser); -$u->Load('doesnotexist-3@example.com'); -ok( $u->Id == 0, " user does not exist and was not created by ticket comment submission"); - -# }}} -# {{{ can another random reply to a ticket after being granted privs? answer should be yes - - -($val,$msg) = $g->PrincipalObj->GrantRight(Right => 'CommentOnTicket'); -ok ($val, "Granted everybody the right to reply to tickets - $msg"); -sleep(60); # gotta sleep so the remote process' ACL cache times out - -ok(open(MAIL, "|@RT_BIN_PATH@/rt-mailgate --url http://localhost".$RT::WebPath."/ --queue general --action comment"), "Opened the mailgate - $@"); -print MAIL <Id]}] This is a test of a comment as an unknown user - -Blah! -Foob! -EOF -close (MAIL); - -#Check the return value -is ($? >> 8, 0, "The mail gateway exited normally. yay"); - -$u = RT::User->new($RT::SystemUser); -$u->Load('doesnotexist-3@example.com'); -ok( $u->Id != 0, " user exists and was created by ticket comment submission"); - -# }}} - -# {{{ Testing preservation of binary attachments - -# Get a binary blob (Best Practical logo) - -# Create a mime entity with an attachment - -use MIME::Entity; -my $entity = MIME::Entity->build( From => 'root@localhost', - To => 'rt@localhost', - Subject => 'binary attachment test', - Data => ['This is a test of a binary attachment']); - -# currently in lib/t/autogen -$entity->attach(Path => '@MASON_HTML_PATH@/NoAuth/images/spacer.gif', - Type => 'image/gif', - Encoding => 'base64'); - -# Create a ticket with a binary attachment -ok(open(MAIL, "|@RT_BIN_PATH@/rt-mailgate --url http://localhost".$RT::WebPath."/ --queue general --action correspond"), "Opened the mailgate - $@"); - -$entity->print(\*MAIL); - -close (MAIL); - -#Check the return value -is ($? >> 8, 0, "The mail gateway exited normally. yay"); - -my $tickets = RT::Tickets->new($RT::SystemUser); -$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC'); -$tickets->Limit(FIELD => 'id', OPERATOR => '>', VALUE => '0'); - $tick = $tickets->First(); -ok (UNIVERSAL::isa($tick,'RT::Ticket')); -ok ($tick->Id, "found ticket ".$tick->Id); -ok ($tick->Subject eq 'binary attachment test', "Created the ticket - ".$tick->Id); - -my $file = `cat ../../../html/NoAuth/images/spacer.gif`; -ok ($file, "Read in the logo image"); - - - use Digest::MD5; -warn "for the raw file the content is ".Digest::MD5::md5_base64($file); - - - -# Verify that the binary attachment is valid in the database -my $attachments = RT::Attachments->new($RT::SystemUser); -$attachments->Limit(FIELD => 'ContentType', VALUE => 'image/gif'); -ok ($attachments->Count == 1, 'Found only one gif in the database'); -my $attachment = $attachments->First; -my $acontent = $attachment->Content; - - warn "coming from the database, the content is ".Digest::MD5::md5_base64($acontent); - -is( $acontent, $file, 'The attachment isn\'t screwed up in the database.'); -# Log in as root -use Getopt::Long; -use LWP::UserAgent; - - -# Grab the binary attachment via the web ui -my $ua = LWP::UserAgent->new(); - -my $full_url = "http://localhost".$RT::WebPath."/Ticket/Attachment/".$attachment->TransactionId."/".$attachment->id."/spacer.gif?&user=root&pass=password"; -my $r = $ua->get( $full_url); - - -# Verify that the downloaded attachment is the same as what we uploaded. -is($file, $r->content, 'The attachment isn\'t screwed up in download'); - - - -# }}} - -# {{{ Simple I18N testing - -ok(open(MAIL, "|@RT_BIN_PATH@/rt-mailgate --url http://localhost".$RT::WebPath."/ --queue general --action correspond"), "Opened the mailgate - $@"); - -print MAIL <> 8, 0, "The mail gateway exited normally. yay"); - -my $unitickets = RT::Tickets->new($RT::SystemUser); -$unitickets->OrderBy(FIELD => 'id', ORDER => 'DESC'); -$unitickets->Limit(FIELD => 'id', OPERATOR => '>', VALUE => '0'); -my $unitick = $unitickets->First(); -ok (UNIVERSAL::isa($unitick,'RT::Ticket')); -ok ($unitick->Id, "found ticket ".$unitick->Id); -ok ($unitick->Subject eq 'This is a test of I18N ticket creation', "Created the ticket - ". $unitick->Subject); - - - -my $unistring = "\303\241\303\251\303\255\303\263\303\272"; -Encode::_utf8_on($unistring); -is ($unitick->Transactions->First->Content, $unitick->Transactions->First->Attachments->First->Content, "Content is ". $unitick->Transactions->First->Attachments->First->Content); -ok($unitick->Transactions->First->Attachments->First->Content =~ /$unistring/i, $unitick->Id." appears to be unicode ". $unitick->Transactions->First->Attachments->First->Id); -# supposedly I18N fails on the second message sent in. - -ok(open(MAIL, "|@RT_BIN_PATH@/rt-mailgate --url http://localhost".$RT::WebPath."/ --queue general --action correspond"), "Opened the mailgate - $@"); - -print MAIL <> 8, 0, "The mail gateway exited normally. yay"); - -my $tickets2 = RT::Tickets->new($RT::SystemUser); -$tickets2->OrderBy(FIELD => 'id', ORDER => 'DESC'); -$tickets2->Limit(FIELD => 'id', OPERATOR => '>', VALUE => '0'); -my $tick2 = $tickets2->First(); -ok (UNIVERSAL::isa($tick2,'RT::Ticket')); -ok ($tick2->Id, "found ticket ".$tick2->Id); -ok ($tick2->Subject eq 'This is a test of I18N ticket creation', "Created the ticket"); - - - -my $unistring = "\303\241\303\251\303\255\303\263\303\272"; -Encode::_utf8_on($unistring); - -ok ($tick2->Transactions->First->Content =~ $unistring, "It appears to be unicode - ".$tick2->Transactions->First->Content); - -# }}} - - -($val,$msg) = $g->PrincipalObj->RevokeRight(Right => 'CreateTicket'); -ok ($val, $msg); - - - -=end testing - -=cut - - -use strict; -use Getopt::Long; -use LWP::UserAgent; - -use constant EX_TEMPFAIL => 75; - -my %opts; -GetOptions( \%opts, "queue=s", "action=s", "url=s", "jar=s", "help", "debug", "extension=s", "timeout=i" ); - -if ( $opts{help} ) { - require Pod::Usage; - import Pod::Usage; - pod2usage("RT Mail Gateway\n"); - exit 1; # Don't want to succeed if this is really an email! -} - -for (qw(url)) { - die "$0 invoked improperly\n\nNo $_ provided to mail gateway!\n" unless $opts{$_}; -} - -undef $/; -my $ua = LWP::UserAgent->new(); -$ua->cookie_jar( { file => $opts{jar} } ); - -my %args = ( - queue => $opts{queue}, - action => $opts{action}, - SessionType => 'REST', # Surpress login box -); - -# Read the message in from STDIN -$args{'message'} = <>; - - -if ($opts{'extension'}) { - $args{$opts{'extension'}} = $ENV{'EXTENSION'}; -} - -# Set up cookie here. - -my $full_url = $opts{'url'}. "/REST/1.0/NoAuth/mail-gateway"; -warn "Connecting to $full_url" if $opts{'debug'}; - - - -$ua->timeout(exists($opts{'timeout'}) ? $opts{'timeout'} : 180); -my $r = $ua->post( $full_url, {%args} ); -check_failure($r); - -my $content = $r->content; -warn $content if ($opts{debug}); - -if ( $content !~ /^(ok|not ok)/ ) { - - # It's not the server's fault if the mail is bogus. We just want to know that - # *something* came out of the server. - warn <is_success(); - - # This ordinarily oughtn't to be able to happen, suggests a bug in RT. - # So only load these heavy modules when they're needed. - require HTML::TreeBuilder; - require HTML::FormatText; - - my $error = $r->error_as_HTML; - my $tree = HTML::TreeBuilder->new->parse($error); - $tree->eof; - - # It'll be a cold day in hell before RT sends out bounces in HTML - my $formatter = HTML::FormatText->new( leftmargin => 0, - rightmargin => 50 ); - warn $formatter->format($tree); - warn "This is $0 exiting because of an undefined server error" if ($opts{debug}); - exit EX_TEMPFAIL; -} - - -=head1 SYNOPSIS - - rt-mailgate --help : this text - -Usual invocation (from MTA): - - rt-mailgate --action (correspond|comment) --queue queuename - --url http://your.rt.server/ - [ --debug ] - [ --extension (queue|action|ticket) ] - [ --timeout seconds ] - - - -See C for more. - -=head1 OPTIONS - -=over 3 - -=item C<--action> - -Specifies whether this is a correspondence or comment address. - -=item C<--queue> - -Reflects which queue this address handles. - -=item C<--url> - -The location of the web server for your RT instance. - - -=item C<--extension> OPTIONAL - -Some MTAs will route mail sent to user-foo@host or user+foo@host to user@host -and present "foo" in the environment variable $EXTENSION. By specifying -the value "queue" for this parameter, the queue this message should be -submitted to will be set to the value of $EXTENSION. By specifying -"ticket", $EXTENSION will be interpreted as the id of the ticket this message -is related to. "action" will allow the user to specify either "comment" or -"correspond" in the address extension. - -=item C<--debug> OPTIONAL - -Print debugging output to standard error - - -=item C<--timeout> OPTIONAL - -Configure the timeout for posting the message to the web server. The -default timeout is 3 minutes (180 seconds). - - -=head1 DESCRIPTION - -The RT mail gateway is the primary mechanism for communicating with RT -via email. This program simply directs the email to the RT web server, -which handles filing correspondence and sending out any required mail. -It is designed to be run as part of the mail delivery process, either -called directly by the MTA or C, or in a F<.forward> or -equivalent. - -=head1 SETUP - -Much of the set up of the mail gateway depends on your MTA and mail -routing configuration. However, you will need first of all to create an -RT user for the mail gateway and assign it a password; this helps to -ensure that mail coming into the web server did originate from the -gateway. - -Next, you need to route mail to C for the queues you're -monitoring. For instance, if you're using F and you have a -"bugs" queue, you will want something like this: - - bugs: "|/opt/rt3/bin/rt-mailgate --queue bugs --action correspond - --url http://rt.mycorp.com/" - - bugs-comment: "|/opt/rt3/bin/rt-mailgate --queue bugs --action comment - --url http://rt.mycorp.com/" - -Note that you don't have to run your RT server on your mail server, as -the mail gateway will happily relay to a different machine. - -=head1 CUSTOMIZATION - -By default, the mail gateway will accept mail from anyone. However, -there are situations in which you will want to authenticate users -before allowing them to communicate with the system. You can do this -via a plug-in mechanism in the RT configuration. - -You can set the array C<@RT::MailPlugins> to be a list of plugins. The -default plugin, if this is not given, is C - that is, -authentication of the person is done based on the C header of the -email. If you have additional filters or authentication mechanisms, you -can list them here and they will be called in order: - - @RT::MailPlugins = ( - "Filter::SpamAssassin", - "Auth::LDAP", - # ... - ); - -See the documentation for any additional plugins you have. - -You may also put Perl subroutines into the C<@RT::MailPlugins> array, if -they behave as described below. - -=head1 WRITING PLUGINS - -What's actually going on in the above is that C<@RT::MailPlugins> is a -list of Perl modules; RT prepends C to the name, -to form a package name, and then C's this module. The module is -expected to provide a C subroutine, which takes a hash of -several parameters: - -=over 4 - -=item Message - -A C object representing the email -=item CurrentUser - -An C object - -=item AuthStat - -The authentication level returned from the previous plugin. - -=item Ticket [OPTIONAL] - -The ticket under discussion - -=item Queue [OPTIONAL] - -If we don't already have a ticket id, we need to know which queue we're talking about - -=item Action - -The action being performed. At the moment, it's one of "comment" or "correspond" - -=back 4 - -It returns two values, the new C object, and the new -authentication level. The authentication level can be zero, not allowed -to communicate with RT at all, (a "permission denied" error is mailed to -the correspondent) or one, which is the normal mode of operation. -Additionally, if C<-1> is returned, then the processing of the plug-ins -stops immediately and the message is ignored. - -=cut - diff --git a/rt/bin/rt.in b/rt/bin/rt.in deleted file mode 100644 index 90369b5b3..000000000 --- a/rt/bin/rt.in +++ /dev/null @@ -1,1816 +0,0 @@ -#!@PERL@ -w -# BEGIN LICENSE BLOCK -# -# Copyright (c) 1996-2003 Jesse Vincent -# -# (Except where explictly superceded by other copyright notices) -# -# This work is made available to you under the terms of Version 2 of -# the GNU General Public License. A copy of that license should have -# been provided with this software, but in any event can be snarfed -# from www.gnu.org. -# -# This work 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. -# -# Unless otherwise specified, all modifications, corrections or -# extensions to this work which alter its source code become the -# property of Best Practical Solutions, LLC when submitted for -# inclusion in the work. -# -# -# END LICENSE BLOCK - -use strict; - -# This program is intentionally written to have as few non-core module -# dependencies as possible. It should stay that way. - -use Cwd; -use LWP; -use HTTP::Request::Common; - -# We derive configuration information from hardwired defaults, dotfiles, -# and the RT* environment variables (in increasing order of precedence). -# Session information is stored in ~/.rt_sessions. - -my $VERSION = 0.02; -my $HOME = eval{(getpwuid($<))[7]} - || $ENV{HOME} || $ENV{LOGDIR} || $ENV{HOMEPATH} - || "."; -my %config = ( - ( - debug => 0, - user => eval{(getpwuid($<))[0]} || $ENV{USER} || $ENV{USERNAME}, - passwd => undef, - server => 'http://localhost/rt/', - ), - config_from_file($ENV{RTCONFIG} || ".rtrc"), - config_from_env() -); -my $session = new Session("$HOME/.rt_sessions"); -my $REST = "$config{server}/REST/1.0"; - -sub whine; -sub DEBUG { warn @_ if $config{debug} >= shift } - -# These regexes are used by command handlers to parse arguments. -# (XXX: Ask Autrijus how i18n changes these definitions.) - -my $name = '[\w.-]+'; -my $field = '[a-zA-Z][a-zA-Z0-9_-]*'; -my $label = '[a-zA-Z0-9@_.+-]+'; -my $labels = "(?:$label,)*$label"; -my $idlist = '(?:(?:\d+-)?\d+,)*(?:\d+-)?\d+'; - -# Our command line looks like this: -# -# rt [options] [arguments] -# -# We'll parse just enough of it to decide upon an action to perform, and -# leave the rest to per-action handlers to interpret appropriately. - -my %handlers = ( -# handler => [ ...aliases... ], - version => ["version", "ver"], - logout => ["logout"], - help => ["help", "man"], - show => ["show", "cat"], - edit => ["create", "edit", "new", "ed"], - list => ["search", "list", "ls"], - comment => ["comment", "correspond"], - link => ["link", "ln"], - merge => ["merge"], - grant => ["grant", "revoke"], -); - -# Once we find and call an appropriate handler, we're done. - -my (%actions, $action); -foreach my $fn (keys %handlers) { - foreach my $alias (@{ $handlers{$fn} }) { - $actions{$alias} = \&{"$fn"}; - } -} -if (@ARGV && exists $actions{$ARGV[0]}) { - $action = shift @ARGV; -} -$actions{$action || "help"}->($action || ()); -exit; - -# Handler functions. -# ------------------ -# -# The following subs are handlers for each entry in %actions. - -sub version { - print "rt $VERSION\n"; -} - -sub logout { - submit("$REST/logout") if defined $session->cookie; -} - -sub help { - my ($action, $type) = @_; - my (%help, $key); - - # What help topics do we know about? - local $/ = undef; - foreach my $item (@{ Form::parse() }) { - my $title = $item->[2]{Title}; - my @titles = ref $title eq 'ARRAY' ? @$title : $title; - - foreach $title (grep $_, @titles) { - $help{$title} = $item->[2]{Text}; - } - } - - # What does the user want help with? - undef $action if ($action && $actions{$action} eq \&help); - unless ($action || $type) { - # If we don't know, we'll look for clues in @ARGV. - foreach (@ARGV) { - if (exists $help{$_}) { $key = $_; last; } - } - unless ($key) { - # Tolerate possibly plural words. - foreach (@ARGV) { - if ($_ =~ s/s$// && exists $help{$_}) { $key = $_; last; } - } - } - } - - if ($type && $action) { - $key = "$type.$action"; - } - $key ||= $type || $action || "introduction"; - - # Find a suitable topic to display. - while (!exists $help{$key}) { - if ($type && $action) { - if ($key eq "$type.$action") { $key = $action; } - elsif ($key eq $action) { $key = $type; } - else { $key = "introduction"; } - } - else { - $key = "introduction"; - } - } - - print STDERR $help{$key}, "\n\n"; -} - -# Displays a list of objects that match some specified condition. - -sub list { - my ($q, $type, %data, $orderby); - my $bad = 0; - - while (@ARGV) { - $_ = shift @ARGV; - - if (/^-t$/) { - $bad = 1, last unless defined($type = get_type_argument()); - } - elsif (/^-S$/) { - $bad = 1, last unless get_var_argument(\%data); - } - elsif (/^-o$/) { - $orderby = shift @ARGV; - } - elsif (/^-([isl])$/) { - $data{format} = $1; - } - elsif (/^-f$/) { - if ($ARGV[0] !~ /^(?:(?:$field,)*$field)$/) { - whine "No valid field list in '-f $ARGV[0]'."; - $bad = 1; last; - } - $data{fields} = shift @ARGV; - } - elsif (!defined $q && !/^-/) { - $q = $_; - } - else { - my $datum = /^-/ ? "option" : "argument"; - whine "Unrecognised $datum '$_'."; - $bad = 1; last; - } - } - - $type ||= "ticket"; - unless ($type && defined $q) { - my $item = $type ? "query string" : "object type"; - whine "No $item specified."; - $bad = 1; - } - return help("list", $type) if $bad; - - my $r = submit("$REST/search/$type", { query => $q, %data, orderby => $orderby || "" }); - print $r->content; -} - -# Displays selected information about a single object. - -sub show { - my ($type, @objects, %data); - my $slurped = 0; - my $bad = 0; - - while (@ARGV) { - $_ = shift @ARGV; - - if (/^-t$/) { - $bad = 1, last unless defined($type = get_type_argument()); - } - elsif (/^-S$/) { - $bad = 1, last unless get_var_argument(\%data); - } - elsif (/^-([isl])$/) { - $data{format} = $1; - } - elsif (/^-$/ && !$slurped) { - chomp(my @lines = ); - foreach (@lines) { - unless (is_object_spec($_, $type)) { - whine "Invalid object on STDIN: '$_'."; - $bad = 1; last; - } - push @objects, $_; - } - $slurped = 1; - } - elsif (/^-f$/) { - if ($ARGV[0] !~ /^(?:(?:$field,)*$field)$/) { - whine "No valid field list in '-f $ARGV[0]'."; - $bad = 1; last; - } - $data{fields} = shift @ARGV; - } - elsif (my $spec = is_object_spec($_, $type)) { - push @objects, $spec; - } - else { - my $datum = /^-/ ? "option" : "argument"; - whine "Unrecognised $datum '$_'."; - $bad = 1; last; - } - } - - unless (@objects) { - whine "No objects specified."; - $bad = 1; - } - return help("show", $type) if $bad; - - my $r = submit("$REST/show", { id => \@objects, %data }); - print $r->content; -} - -# To create a new object, we ask the server for a form with the defaults -# filled in, allow the user to edit it, and send the form back. -# -# To edit an object, we must ask the server for a form representing that -# object, make changes requested by the user (either on the command line -# or interactively via $EDITOR), and send the form back. - -sub edit { - my ($action) = @_; - my (%data, $type, @objects); - my ($cl, $text, $edit, $input, $output); - - use vars qw(%set %add %del); - %set = %add = %del = (); - my $slurped = 0; - my $bad = 0; - - while (@ARGV) { - $_ = shift @ARGV; - - if (/^-e$/) { $edit = 1 } - elsif (/^-i$/) { $input = 1 } - elsif (/^-o$/) { $output = 1 } - elsif (/^-t$/) { - $bad = 1, last unless defined($type = get_type_argument()); - } - elsif (/^-S$/) { - $bad = 1, last unless get_var_argument(\%data); - } - elsif (/^-$/ && !($slurped || $input)) { - chomp(my @lines = ); - foreach (@lines) { - unless (is_object_spec($_, $type)) { - whine "Invalid object on STDIN: '$_'."; - $bad = 1; last; - } - push @objects, $_; - } - $slurped = 1; - } - elsif (/^set$/i) { - my $vars = 0; - - while (@ARGV && $ARGV[0] =~ /^($field)([+-]?=)(.*)$/) { - my ($key, $op, $val) = ($1, $2, $3); - my $hash = ($op eq '=') ? \%set : ($op =~ /^\+/) ? \%add : \%del; - - vpush($hash, lc $key, $val); - shift @ARGV; - $vars++; - } - unless ($vars) { - whine "No variables to set."; - $bad = 1; last; - } - $cl = $vars; - } - elsif (/^(?:add|del)$/i) { - my $vars = 0; - my $hash = ($_ eq "add") ? \%add : \%del; - - while (@ARGV && $ARGV[0] =~ /^($field)=(.*)$/) { - my ($key, $val) = ($1, $2); - - vpush($hash, lc $key, $val); - shift @ARGV; - $vars++; - } - unless ($vars) { - whine "No variables to set."; - $bad = 1; last; - } - $cl = $vars; - } - elsif (my $spec = is_object_spec($_, $type)) { - push @objects, $spec; - } - else { - my $datum = /^-/ ? "option" : "argument"; - whine "Unrecognised $datum '$_'."; - $bad = 1; last; - } - } - - if ($action =~ /^ed(?:it)?$/) { - unless (@objects) { - whine "No objects specified."; - $bad = 1; - } - } - else { - if (@objects) { - whine "You shouldn't specify objects as arguments to $action."; - $bad = 1; - } - unless ($type) { - whine "What type of object do you want to create?"; - $bad = 1; - } - @objects = ("$type/new"); - } - return help($action, $type) if $bad; - - # We need a form to make changes to. We usually ask the server for - # one, but we can avoid that if we are fed one on STDIN, or if the - # user doesn't want to edit the form by hand, and the command line - # specifies only simple variable assignments. - - if ($input) { - local $/ = undef; - $text = ; - } - elsif ($edit || %add || %del || !$cl) { - my $r = submit("$REST/show", { id => \@objects, format => 'l' }); - $text = $r->content; - } - - # If any changes were specified on the command line, apply them. - if ($cl) { - if ($text) { - # We're updating forms from the server. - my $forms = Form::parse($text); - - foreach my $form (@$forms) { - my ($c, $o, $k, $e) = @$form; - my ($key, $val); - - next if ($e || !@$o); - - local %add = %add; - local %del = %del; - local %set = %set; - - # Make changes to existing fields. - foreach $key (@$o) { - if (exists $add{lc $key}) { - $val = delete $add{lc $key}; - vpush($k, $key, $val); - $k->{$key} = vsplit($k->{$key}) if $val =~ /[,\n]/; - } - if (exists $del{lc $key}) { - $val = delete $del{lc $key}; - my %val = map {$_=>1} @{ vsplit($val) }; - $k->{$key} = vsplit($k->{$key}); - @{$k->{$key}} = grep {!exists $val{$_}} @{$k->{$key}}; - } - if (exists $set{lc $key}) { - $k->{$key} = delete $set{lc $key}; - } - } - - # Then update the others. - foreach $key (keys %set) { vpush($k, $key, $set{$key}) } - foreach $key (keys %add) { - vpush($k, $key, $add{$key}); - $k->{$key} = vsplit($k->{$key}); - } - push @$o, (keys %add, keys %set); - } - - $text = Form::compose($forms); - } - else { - # We're rolling our own set of forms. - my @forms; - foreach (@objects) { - my ($type, $ids, $args) = - m{^($name)/($idlist|$labels)(?:(/.*))?$}o; - - $args ||= ""; - foreach my $obj (expand_list($ids)) { - my %set = (%set, id => "$type/$obj$args"); - push @forms, ["", [keys %set], \%set]; - } - } - $text = Form::compose(\@forms); - } - } - - if ($output) { - print $text; - exit; - } - - my $synerr = 0; - -EDIT: - # We'll let the user edit the form before sending it to the server, - # unless we have enough information to submit it non-interactively. - if ($edit || (!$input && !$cl)) { - my $newtext = vi($text); - # We won't resubmit a bad form unless it was changed. - $text = ($synerr && $newtext eq $text) ? undef : $newtext; - } - - if ($text) { - my $r = submit("$REST/edit", {content => $text, %data}); - if ($r->code == 409) { - # If we submitted a bad form, we'll give the user a chance - # to correct it and resubmit. - if ($edit || (!$input && !$cl)) { - $text = $r->content; - $synerr = 1; - goto EDIT; - } - else { - print $r->content; - exit -1; - } - } - print $r->content; - } -} - -# We roll "comment" and "correspond" into the same handler. - -sub comment { - my ($action) = @_; - my (%data, $id, @files, @bcc, @cc, $msg, $wtime, $edit); - my $bad = 0; - - while (@ARGV) { - $_ = shift @ARGV; - - if (/^-e$/) { - $edit = 1; - } - elsif (/^-[abcmw]$/) { - unless (@ARGV) { - whine "No argument specified with $_."; - $bad = 1; last; - } - - if (/-a/) { - unless (-f $ARGV[0] && -r $ARGV[0]) { - whine "Cannot read attachment: '$ARGV[0]'."; - exit -1; - } - push @files, shift @ARGV; - } - elsif (/-([bc])/) { - my $a = $_ eq "-b" ? \@bcc : \@cc; - @$a = split /\s*,\s*/, shift @ARGV; - } - elsif (/-m/) { $msg = shift @ARGV } - elsif (/-w/) { $wtime = shift @ARGV } - } - elsif (!$id && m|^(?:ticket/)?($idlist)$|) { - $id = $1; - } - else { - my $datum = /^-/ ? "option" : "argument"; - whine "Unrecognised $datum '$_'."; - $bad = 1; last; - } - } - - unless ($id) { - whine "No object specified."; - $bad = 1; - } - return help($action, "ticket") if $bad; - - my $form = [ - "", - [ "Ticket", "Action", "Cc", "Bcc", "Attachment", "TimeWorked", "Text" ], - { - Ticket => $id, - Action => $action, - Cc => [ @cc ], - Bcc => [ @bcc ], - Attachment => [ @files ], - TimeWorked => $wtime || '', - Text => $msg || '', - } - ]; - - my $text = Form::compose([ $form ]); - - if ($edit || !$msg) { - my $error = 0; - my ($c, $o, $k, $e); - - do { - my $ntext = vi($text); - exit if ($error && $ntext eq $text); - $text = $ntext; - $form = Form::parse($text); - $error = 0; - - ($c, $o, $k, $e) = @{ $form->[0] }; - if ($e) { - $error = 1; - $c = "# Syntax error."; - goto NEXT; - } - elsif (!@$o) { - exit; - } - @files = @{ vsplit($k->{Attachment}) }; - - NEXT: - $text = Form::compose([[$c, $o, $k, $e]]); - } while ($error); - } - - my $i = 1; - foreach my $file (@files) { - $data{"attachment_$i"} = bless([ $file ], "Attachment"); - $i++; - } - $data{content} = $text; - - my $r = submit("$REST/ticket/comment/$id", \%data); - print $r->content; -} - -# Merge one ticket into another. - -sub merge { - my @id; - my $bad = 0; - - while (@ARGV) { - $_ = shift @ARGV; - - if (/^\d+$/) { - push @id, $_; - } - else { - whine "Unrecognised argument: '$_'."; - $bad = 1; last; - } - } - - unless (@id == 2) { - my $evil = @id > 2 ? "many" : "few"; - whine "Too $evil arguments specified."; - $bad = 1; - } - return help("merge", "ticket") if $bad; - - my $r = submit("$REST/ticket/merge/$id[0]", {into => $id[1]}); - print $r->content; -} - -# Link one ticket to another. - -sub link { - my ($bad, $del, %data) = (0, 0, ()); - my %ltypes = map { lc $_ => $_ } qw(DependsOn DependedOnBy RefersTo - ReferredToBy HasMember MemberOf); - - while (@ARGV && $ARGV[0] =~ /^-/) { - $_ = shift @ARGV; - - if (/^-d$/) { - $del = 1; - } - else { - whine "Unrecognised option: '$_'."; - $bad = 1; last; - } - } - - if (@ARGV == 3) { - my ($from, $rel, $to) = @ARGV; - if ($from !~ /^\d+$/ || $to !~ /^\d+$/) { - my $bad = $from =~ /^\d+$/ ? $to : $from; - whine "Invalid ticket ID '$bad' specified."; - $bad = 1; - } - unless (exists $ltypes{lc $rel}) { - whine "Invalid relationship '$rel' specified."; - $bad = 1; - } - %data = (id => $from, rel => $rel, to => $to, del => $del); - } - else { - my $bad = @ARGV < 3 ? "few" : "many"; - whine "Too $bad arguments specified."; - $bad = 1; - } - return help("link", "ticket") if $bad; - - my $r = submit("$REST/ticket/link", \%data); - print $r->content; -} - -# Grant/revoke a user's rights. - -sub grant { - my ($cmd) = @_; - - my $revoke = 0; - while (@ARGV) { - } - - $revoke = 1 if $cmd->{action} eq 'revoke'; -} - -# Client <-> Server communication. -# -------------------------------- -# -# This function composes and sends an HTTP request to the RT server, and -# interprets the response. It takes a request URI, and optional request -# data (a string, or a reference to a set of key-value pairs). - -sub submit { - my ($uri, $content) = @_; - my ($req, $data); - my $ua = new LWP::UserAgent(agent => "RT/3.0b", env_proxy => 1); - - # Did the caller specify any data to send with the request? - $data = []; - if (defined $content) { - unless (ref $content) { - # If it's just a string, make sure LWP handles it properly. - # (By pretending that it's a file!) - $content = [ content => [undef, "", Content => $content] ]; - } - elsif (ref $content eq 'HASH') { - my @data; - foreach my $k (keys %$content) { - if (ref $content->{$k} eq 'ARRAY') { - foreach my $v (@{ $content->{$k} }) { - push @data, $k, $v; - } - } - else { push @data, $k, $content->{$k} } - } - $content = \@data; - } - $data = $content; - } - - # Should we send authentication information to start a new session? - if (!defined $session->cookie) { - push @$data, ( user => $config{user} ); - push @$data, ( pass => $config{passwd} || read_passwd() ); - } - - # Now, we construct the request. - if (@$data) { - $req = POST($uri, $data, Content_Type => 'form-data'); - } - else { - $req = GET($uri); - } - $session->add_cookie_header($req); - - # Then we send the request and parse the response. - DEBUG(3, $req->as_string); - my $res = $ua->request($req); - DEBUG(3, $res->as_string); - - if ($res->is_success) { - # The content of the response we get from the RT server consists - # of an HTTP-like status line followed by optional header lines, - # a blank line, and arbitrary text. - - my ($head, $text) = split /\n\n/, $res->content, 2; - my ($status, @headers) = split /\n/, $head; - $text =~ s/\n*$/\n/; - - # "RT/3.0.1 401 Credentials required" - if ($status !~ m#^RT/\d+(?:\.\d+)+(?:-?\w+)? (\d+) ([\w\s]+)$#) { - warn "rt: Malformed RT response from $config{server}.\n"; - warn "(Rerun with RTDEBUG=3 for details.)\n" if $config{debug} < 3; - exit -1; - } - - # Our caller can pretend that the server returned a custom HTTP - # response code and message. (Doing that directly is apparently - # not sufficiently portable and uncomplicated.) - $res->code($1); - $res->message($2); - $res->content($text); - $session->update($res) if ($res->is_success || $res->code != 401); - - if (!$res->is_success) { - # We can deal with authentication failures ourselves. Either - # we sent invalid credentials, or our session has expired. - if ($res->code == 401) { - my %d = @$data; - if (exists $d{user}) { - warn "rt: Incorrect username or password.\n"; - exit -1; - } - elsif ($req->header("Cookie")) { - # We'll retry the request with credentials, unless - # we only wanted to logout in the first place. - $session->delete; - return submit(@_) unless $uri eq "$REST/logout"; - } - } - # Conflicts should be dealt with by the handler and user. - # For anything else, we just die. - elsif ($res->code != 409) { - warn "rt: ", $res->content; - exit; - } - } - } - else { - warn "rt: Server error: ", $res->message, " (", $res->code, ")\n"; - exit -1; - } - - return $res; -} - -# Session management. -# ------------------- -# -# Maintains a list of active sessions in the ~/.rt_sessions file. -{ - package Session; - my ($s, $u); - - # Initialises the session cache. - sub new { - my ($class, $file) = @_; - my $self = { - file => $file || "$HOME/.rt_sessions", - sids => { } - }; - - # The current session is identified by the currently configured - # server and user. - ($s, $u) = @config{"server", "user"}; - - bless $self, $class; - $self->load(); - - return $self; - } - - # Returns the current session cookie. - sub cookie { - my ($self) = @_; - my $cookie = $self->{sids}{$s}{$u}; - return defined $cookie ? "RT_SID=$cookie" : undef; - } - - # Deletes the current session cookie. - sub delete { - my ($self) = @_; - delete $self->{sids}{$s}{$u}; - } - - # Adds a Cookie header to an outgoing HTTP request. - sub add_cookie_header { - my ($self, $request) = @_; - my $cookie = $self->cookie(); - - $request->header(Cookie => $cookie) if defined $cookie; - } - - # Extracts the Set-Cookie header from an HTTP response, and updates - # session information accordingly. - sub update { - my ($self, $response) = @_; - my $cookie = $response->header("Set-Cookie"); - - if (defined $cookie && $cookie =~ /^RT_SID=([0-9A-Fa-f]+);/) { - $self->{sids}{$s}{$u} = $1; - } - } - - # Loads the session cache from the specified file. - sub load { - my ($self, $file) = @_; - $file ||= $self->{file}; - local *F; - - open(F, $file) && do { - $self->{file} = $file; - my $sids = $self->{sids} = {}; - while () { - chomp; - next if /^$/ || /^#/; - next unless m#^https?://[^ ]+ \w+ [0-9A-Fa-f]+$#; - my ($server, $user, $cookie) = split / /, $_; - $sids->{$server}{$user} = $cookie; - } - return 1; - }; - return 0; - } - - # Writes the current session cache to the specified file. - sub save { - my ($self, $file) = shift; - $file ||= $self->{file}; - local *F; - - open(F, ">$file") && do { - my $sids = $self->{sids}; - foreach my $server (keys %$sids) { - foreach my $user (keys %{ $sids->{$server} }) { - my $sid = $sids->{$server}{$user}; - if (defined $sid) { - print F "$server $user $sid\n"; - } - } - } - close(F); - chmod 0600, $file; - return 1; - }; - return 0; - } - - sub DESTROY { - my $self = shift; - $self->save; - } -} - -# Form handling. -# -------------- -# -# Forms are RFC822-style sets of (field, value) specifications with some -# initial comments and interspersed blank lines allowed for convenience. -# Sets of forms are separated by --\n (in a cheap parody of MIME). -# -# Each form is parsed into an array with four elements: commented text -# at the start of the form, an array with the order of keys, a hash with -# key/value pairs, and optional error text if the form syntax was wrong. - -# Returns a reference to an array of parsed forms. -sub Form::parse { - my $state = 0; - my @forms = (); - my @lines = split /\n/, $_[0]; - my ($c, $o, $k, $e) = ("", [], {}, ""); - - LINE: - while (@lines) { - my $line = shift @lines; - - next LINE if $line eq ''; - - if ($line eq '--') { - # We reached the end of one form. We'll ignore it if it was - # empty, and store it otherwise, errors and all. - if ($e || $c || @$o) { - push @forms, [ $c, $o, $k, $e ]; - $c = ""; $o = []; $k = {}; $e = ""; - } - $state = 0; - } - elsif ($state != -1) { - if ($state == 0 && $line =~ /^#/) { - # Read an optional block of comments (only) at the start - # of the form. - $state = 1; - $c = $line; - while (@lines && $lines[0] =~ /^#/) { - $c .= "\n".shift @lines; - } - $c .= "\n"; - } - elsif ($state <= 1 && $line =~ /^($field):(?:\s+(.*))?$/) { - # Read a field: value specification. - my $f = $1; - my @v = ($2 || ()); - - # Read continuation lines, if any. - while (@lines && ($lines[0] eq '' || $lines[0] =~ /^\s+/)) { - push @v, shift @lines; - } - pop @v while (@v && $v[-1] eq ''); - - # Strip longest common leading indent from text. - my $ws = ""; - foreach my $ls (map {/^(\s+)/} @v[1..$#v]) { - $ws = $ls if (!$ws || length($ls) < length($ws)); - } - s/^$ws// foreach @v; - - push(@$o, $f) unless exists $k->{$f}; - vpush($k, $f, join("\n", @v)); - - $state = 1; - } - elsif ($line !~ /^#/) { - # We've found a syntax error, so we'll reconstruct the - # form parsed thus far, and add an error marker. (>>) - $state = -1; - $e = Form::compose([[ "", $o, $k, "" ]]); - $e.= $line =~ /^>>/ ? "$line\n" : ">> $line\n"; - } - } - else { - # We saw a syntax error earlier, so we'll accumulate the - # contents of this form until the end. - $e .= "$line\n"; - } - } - push(@forms, [ $c, $o, $k, $e ]) if ($e || $c || @$o); - - foreach my $l (keys %$k) { - $k->{$l} = vsplit($k->{$l}) if (ref $k->{$l} eq 'ARRAY'); - } - - return \@forms; -} - -# Returns text representing a set of forms. -sub Form::compose { - my ($forms) = @_; - my @text; - - foreach my $form (@$forms) { - my ($c, $o, $k, $e) = @$form; - my $text = ""; - - if ($c) { - $c =~ s/\n*$/\n/; - $text = "$c\n"; - } - if ($e) { - $text .= $e; - } - elsif ($o) { - my @lines; - - foreach my $key (@$o) { - my ($line, $sp); - my $v = $k->{$key}; - my @values = ref $v eq 'ARRAY' ? @$v : $v; - - $sp = " "x(length("$key: ")); - $sp = " "x4 if length($sp) > 16; - - foreach $v (@values) { - if ($v =~ /\n/) { - $v =~ s/^/$sp/gm; - $v =~ s/^$sp//; - - if ($line) { - push @lines, "$line\n\n"; - $line = ""; - } - elsif (@lines && $lines[-1] !~ /\n\n$/) { - $lines[-1] .= "\n"; - } - push @lines, "$key: $v\n\n"; - } - elsif ($line && - length($line)+length($v)-rindex($line, "\n") >= 70) - { - $line .= ",\n$sp$v"; - } - else { - $line = $line ? "$line, $v" : "$key: $v"; - } - } - - $line = "$key:" unless @values; - if ($line) { - if ($line =~ /\n/) { - if (@lines && $lines[-1] !~ /\n\n$/) { - $lines[-1] .= "\n"; - } - $line .= "\n"; - } - push @lines, "$line\n"; - } - } - - $text .= join "", @lines; - } - else { - chomp $text; - } - push @text, $text; - } - - return join "\n--\n\n", @text; -} - -# Configuration. -# -------------- - -# Returns configuration information from the environment. -sub config_from_env { - my %env; - - foreach my $k ("DEBUG", "USER", "PASSWD", "SERVER") { - if (exists $ENV{"RT$k"}) { - $env{lc $k} = $ENV{"RT$k"}; - } - } - - return %env; -} - -# Finds a suitable configuration file and returns information from it. -sub config_from_file { - my ($rc) = @_; - - if ($rc =~ m#^/#) { - # We'll use an absolute path if we were given one. - return parse_config_file($rc); - } - else { - # Otherwise we'll use the first file we can find in the current - # directory, or in one of its (increasingly distant) ancestors. - - my @dirs = split /\//, cwd; - while (@dirs) { - my $file = join('/', @dirs, $rc); - if (-r $file) { - return parse_config_file($file); - } - - # Remove the last directory component each time. - pop @dirs; - } - - # Still nothing? We'll fall back to some likely defaults. - for ("$HOME/$rc", "/etc/rt.conf") { - return parse_config_file($_) if (-r $_); - } - } - - return (); -} - -# Makes a hash of the specified configuration file. -sub parse_config_file { - my %cfg; - my ($file) = @_; - - open(CFG, $file) && do { - while () { - chomp; - next if (/^#/ || /^\s*$/); - - if (/^(user|passwd|server)\s+([^ ]+)$/) { - $cfg{$1} = $2; - } - else { - die "rt: $file:$.: unknown configuration directive.\n"; - } - } - }; - - return %cfg; -} - -# Helper functions. -# ----------------- - -sub whine { - my $sub = (caller(1))[3]; - $sub =~ s/^main:://; - warn "rt: $sub: @_\n"; - return; -} - -sub read_passwd { - eval 'require Term::ReadKey'; - if ($@) { - die "No password specified (and Term::ReadKey not installed).\n"; - } - - print "Password: "; - Term::ReadKey::ReadMode('noecho'); - chomp(my $passwd = Term::ReadKey::ReadLine(0)); - Term::ReadKey::ReadMode('restore'); - print "\n"; - - return $passwd; -} - -sub vi { - my ($text) = @_; - my $file = "/tmp/rt.form.$$"; - my $editor = $ENV{EDITOR} || $ENV{VISUAL} || "vi"; - - local *F; - local $/ = undef; - - open(F, ">$file") || die "$file: $!\n"; print F $text; close(F); - system($editor, $file) && die "Couldn't run $editor.\n"; - open(F, $file) || die "$file: $!\n"; $text = ; close(F); - unlink($file); - - return $text; -} - -# Add a value to a (possibly multi-valued) hash key. -sub vpush { - my ($hash, $key, $val) = @_; - my @val = ref $val eq 'ARRAY' ? @$val : $val; - - if (exists $hash->{$key}) { - unless (ref $hash->{$key} eq 'ARRAY') { - my @v = $hash->{$key} ne '' ? $hash->{$key} : (); - $hash->{$key} = \@v; - } - push @{ $hash->{$key} }, @val; - } - else { - $hash->{$key} = $val; - } -} - -# "Normalise" a hash key that's known to be multi-valued. -sub vsplit { - my ($val) = @_; - my ($word, @words); - my @values = ref $val eq 'ARRAY' ? @$val : $val; - - foreach my $line (map {split /\n/} @values) { - # XXX: This should become a real parser, à la Text::ParseWords. - $line =~ s/^\s+//; - $line =~ s/\s+$//; - push @words, split /\s*,\s*/, $line; - } - - return \@words; -} - -sub expand_list { - my ($list) = @_; - my ($elt, @elts, %elts); - - foreach $elt (split /,/, $list) { - if ($elt =~ /^(\d+)-(\d+)$/) { push @elts, ($1..$2) } - else { push @elts, $elt } - } - - @elts{@elts}=(); - return sort {$a<=>$b} keys %elts; -} - -sub get_type_argument { - my $type; - - if (@ARGV) { - $type = shift @ARGV; - unless ($type =~ /^[A-Za-z0-9_.-]+$/) { - # We want whine to mention our caller, not us. - @_ = ("Invalid type '$type' specified."); - goto &whine; - } - } - else { - @_ = ("No type argument specified with -t."); - goto &whine; - } - - $type =~ s/s$//; # "Plural". Ugh. - return $type; -} - -sub get_var_argument { - my ($data) = @_; - - if (@ARGV) { - my $kv = shift @ARGV; - if (my ($k, $v) = $kv =~ /^($field)=(.*)$/) { - push @{ $data->{$k} }, $v; - } - else { - @_ = ("Invalid variable specification: '$kv'."); - goto &whine; - } - } - else { - @_ = ("No variable argument specified with -S."); - goto &whine; - } -} - -sub is_object_spec { - my ($spec, $type) = @_; - - $spec =~ s|^(?:$type/)?|$type/| if defined $type; - return $spec if ($spec =~ m{^$name/(?:$idlist|$labels)(?:/.*)?$}o); - return; -} - -__DATA__ - -Title: intro -Title: introduction -Text: - - ** THIS IS AN UNSUPPORTED PREVIEW RELEASE ** - ** PLEASE REPORT BUGS TO rt-bugs@fsck.com ** - - This is a command-line interface to RT 3. - - It allows you to interact with an RT server over HTTP, and offers an - interface to RT's functionality that is better-suited to automation - and integration with other tools. - - In general, each invocation of this program should specify an action - to perform on one or more objects, and any other arguments required - to complete the desired action. - - For more information: - - - rt help actions (a list of possible actions) - - rt help objects (how to specify objects) - - rt help usage (syntax information) - - - rt help config (configuration details) - - rt help examples (a few useful examples) - - rt help topics (a list of help topics) - --- - -Title: usage -Title: syntax -Text: - - Syntax: - - rt [options] [arguments] - - Each invocation of this program must specify an action (e.g. "edit", - "create"), options to modify behaviour, and other arguments required - by the specified action. (For example, most actions expect a list of - numeric object IDs to act upon.) - - The details of the syntax and arguments for each action are given by - "rt help ". Some actions may be referred to by more than one - name ("create" is the same as "new", for example). - - Objects are identified by a type and an ID (which can be a name or a - number, depending on the type). For some actions, the object type is - implied (you can only comment on tickets); for others, the user must - specify it explicitly. See "rt help objects" for details. - - In syntax descriptions, mandatory arguments that must be replaced by - appropriate value are enclosed in <>, and optional arguments are - indicated by [] (for example, and [options] above). - - For more information: - - - rt help objects (how to specify objects) - - rt help actions (a list of actions) - - rt help types (a list of object types) - --- - -Title: conf -Title: config -Title: configuration -Text: - - This program has two major sources of configuration information: its - configuration files, and the environment. - - The program looks for configuration directives in a file named .rtrc - (or $RTCONFIG; see below) in the current directory, and then in more - distant ancestors, until it reaches /. If no suitable configuration - files are found, it will also check for ~/.rtrc and /etc/rt.conf. - - Configuration directives: - - The following directives may occur, one per line: - - - server URL to RT server. - - user RT username. - - passwd RT user's password. - - Blank and #-commented lines are ignored. - - Environment variables: - - The following environment variables override any corresponding - values defined in configuration files: - - - RTUSER - - RTPASSWD - - RTSERVER - - RTDEBUG Numeric debug level. (Set to 3 for full logs.) - - RTCONFIG Specifies a name other than ".rtrc" for the - configuration file. - --- - -Title: objects -Text: - - Syntax: - - /[/] - - Every object in RT has a type (e.g. "ticket", "queue") and a numeric - ID. Some types of objects can also be identified by name (like users - and queues). Furthermore, objects may have named attributes (such as - "ticket/1/history"). - - An object specification is like a path in a virtual filesystem, with - object types as top-level directories, object IDs as subdirectories, - and named attributes as further subdirectories. - - A comma-separated list of names, numeric IDs, or numeric ranges can - be used to specify more than one object of the same type. Note that - the list must be a single argument (i.e., no spaces). For example, - "user/root,1-3,5,7-10,ams" is a list of ten users; the same list - can also be written as "user/ams,root,1,2,3,5,7,8-20". - - Examples: - - ticket/1 - ticket/1/attachments - ticket/1/attachments/3 - ticket/1/attachments/3/content - ticket/1-3/links - ticket/1-3,5-7/history - - user/ams - user/ams/rights - user/ams,rai,1/rights - - For more information: - - - rt help (action-specific details) - - rt help (type-specific details) - --- - -Title: actions -Title: commands -Text: - - You can currently perform the following actions on all objects: - - - list (list objects matching some condition) - - show (display object details) - - edit (edit object details) - - create (create a new object) - - Each type may define actions specific to itself; these are listed in - the help item about that type. - - For more information: - - - rt help (action-specific details) - - rt help types (a list of possible types) - --- - -Title: types -Text: - - You can currently operate on the following types of objects: - - - tickets - - users - - groups - - queues - - For more information: - - - rt help (type-specific details) - - rt help objects (how to specify objects) - - rt help actions (a list of possible actions) - --- - -Title: ticket -Text: - - Tickets are identified by a numeric ID. - - The following generic operations may be performed upon tickets: - - - list - - show - - edit - - create - - In addition, the following ticket-specific actions exist: - - - link - - merge - - comment - - correspond - - Attributes: - - The following attributes can be used with "rt show" or "rt edit" - to retrieve or edit other information associated with tickets: - - links A ticket's relationships with others. - history All of a ticket's transactions. - history/type/ Only a particular type of transaction. - history/id/ Only the transaction of the specified id. - attachments A list of attachments. - attachments/ The metadata for an individual attachment. - attachments//content The content of an individual attachment. - --- - -Title: user -Title: group -Text: - - Users and groups are identified by name or numeric ID. - - The following generic operations may be performed upon them: - - - list - - show - - edit - - create - - In addition, the following type-specific actions exist: - - - grant - - revoke - - Attributes: - - The following attributes can be used with "rt show" or "rt edit" - to retrieve or edit other information associated with users and - groups: - - rights Global rights granted to this user. - rights/ Queue rights for this user. - --- - -Title: queue -Text: - - Queues are identified by name or numeric ID. - - Currently, they can be subjected to the following actions: - - - show - - edit - - create - --- - -Title: logout -Text: - - Syntax: - - rt logout - - Terminates the currently established login session. You will need to - provide authentication credentials before you can continue using the - server. (See "rt help config" for details about authentication.) - --- - -Title: ls -Title: list -Title: search -Text: - - Syntax: - - rt [options] "query string" - - Displays a list of objects matching the specified conditions. - ("ls", "list", and "search" are synonyms.) - - Conditions are expressed in the SQL-like syntax used internally by - RT3. (For more information, see "rt help query".) The query string - must be supplied as one argument. - - (Right now, the server doesn't support listing anything but tickets. - Other types will be supported in future; this client will be able to - take advantage of that support without any changes.) - - Options: - - The following options control how much information is displayed - about each matching object: - - -i Numeric IDs only. (Useful for |rt edit -; see examples.) - -s Short description. - -l Longer description. - - In addition, - - -o +/- Orders the returned list by the specified field. - -S var=val Submits the specified variable with the request. - -t type Specifies the type of object to look for. (The - default is "ticket".) - - Examples: - - rt ls "Priority > 5 and Status='new'" - rt ls -o +Subject "Priority > 5 and Status='new'" - rt ls -o -Created "Priority > 5 and Status='new'" - rt ls -i "Priority > 5"|rt edit - set status=resolved - rt ls -t ticket "Subject like '[PATCH]%'" - --- - -Title: show -Text: - - Syntax: - - rt show [options] - - Displays details of the specified objects. - - For some types, object information is further classified into named - attributes (for example, "1-3/links" is a valid ticket specification - that refers to the links for tickets 1-3). Consult "rt help " - and "rt help objects" for further details. - - This command writes a set of forms representing the requested object - data to STDOUT. - - Options: - - - Read IDs from STDIN instead of the command-line. - -t type Specifies object type. - -f a,b,c Restrict the display to the specified fields. - -S var=val Submits the specified variable with the request. - - Examples: - - rt show -t ticket -f id,subject,status 1-3 - rt show ticket/3/attachments/29 - rt show ticket/3/attachments/29/content - rt show ticket/1-3/links - rt show -t user 2 - --- - -Title: new -Title: edit -Title: create -Text: - - Syntax: - - rt edit [options] set field=value [field=value] ... - add field=value [field=value] ... - del field=value [field=value] ... - - Edits information corresponding to the specified objects. - - If, instead of "edit", an action of "new" or "create" is specified, - then a new object is created. In this case, no numeric object IDs - may be specified, but the syntax and behaviour remain otherwise - unchanged. - - This command typically starts an editor to allow you to edit object - data in a form for submission. If you specified enough information - on the command-line, however, it will make the submission directly. - - The command line may specify field-values in three different ways. - "set" sets the named field to the given value, "add" adds a value - to a multi-valued field, and "del" deletes the corresponding value. - Each "field=value" specification must be given as a single argument. - - For some types, object information is further classified into named - attributes (for example, "1-3/links" is a valid ticket specification - that refers to the links for tickets 1-3). These attributes may also - be edited. Consult "rt help " and "rt help object" for further - details. - - Options: - - - Read numeric IDs from STDIN instead of the command-line. - (Useful with rt ls ... | rt edit -; see examples below.) - -i Read a completed form from STDIN before submitting. - -o Dump the completed form to STDOUT instead of submitting. - -e Allows you to edit the form even if the command-line has - enough information to make a submission directly. - -S var=val - Submits the specified variable with the request. - -t type Specifies object type. - - Examples: - - # Interactive (starts $EDITOR with a form). - rt edit ticket/3 - rt create -t ticket - - # Non-interactive. - rt edit ticket/1-3 add cc=foo@example.com set priority=3 - rt ls -t tickets -i 'Priority > 5' | rt edit - set status=resolved - rt edit ticket/4 set priority=3 owner=bar@example.com \ - add cc=foo@example.com bcc=quux@example.net - rt create -t ticket subject='new ticket' priority=10 \ - add cc=foo@example.com - --- - -Title: comment -Title: correspond -Text: - - Syntax: - - rt [options] - - Adds a comment (or correspondence) to the specified ticket (the only - difference being that comments aren't sent to the requestors.) - - This command will typically start an editor and allow you to type a - comment into a form. If, however, you specified all the necessary - information on the command line, it submits the comment directly. - - (See "rt help forms" for more information about forms.) - - Options: - - -m Specify comment text. - -a Attach a file to the comment. (May be used more - than once to attach multiple files.) - -c A comma-separated list of Cc addresses. - -b A comma-separated list of Bcc addresses. - -w