Commit Graph

768 Commits

Author SHA1 Message Date
Rob Crittenden
8d796eedee kw is supposed to contain just lower-case values 2009-03-19 16:02:12 -04:00
Rob Crittenden
51193923f1 kw is supposed to contain just lower-case values 2009-03-19 16:02:09 -04:00
Rob Crittenden
bc056cda2d Update the ACI class to be more robust and the beginnings of an ACI plugin
The ACI plugin is really  meant for developers to help manage the ACIs.
It may or may not be shipped. If it is it will be disabled by default.
It is very much a shoot-in-foot problem waiting to happen.
2009-03-18 15:47:06 -04:00
Rob Crittenden
4c5806b4b4 Fix some minor issues in group and service plugins 2009-03-17 14:52:38 -04:00
Rob Crittenden
6fa330662a Add taskgroups plugin
Taskgroups are what we grant permission to with the new ACI system.
2009-03-17 14:52:17 -04:00
Rob Crittenden
eb0601a19c Plugin to handle IPA configuration 2009-03-04 09:56:16 -05:00
Rob Crittenden
7933a196a1 Set a minimum value for password policy integers 2009-03-04 09:56:13 -05:00
Rob Crittenden
bd9f7cd720 Fix some netgroup issues related to not all groups being posixGroups 2009-02-27 23:18:35 -05:00
Rob Crittenden
be0cac932a Update objectclasses for groups, by default not posix groups.
This change depends on DS bugs 487574 and 487725. Groups cannot be
promoted properly without these fixed. It will fail with an
Object Class violation because gidNumber isn't set.
2009-02-27 23:18:19 -05:00
Rob Crittenden
3fdf9abfce Enforce netgroup uniqueness, allow netgroups to be members of netgroups
When adding an entry, convert a constraint violation of "already exists"
into a DuplicateEntry exception so the user gets a useful response
2009-02-27 12:57:21 -05:00
Rob Crittenden
af0c0c309d Added tofiles command and some documentation to the automount plugin 2009-02-24 16:54:28 -05:00
Rob Crittenden
b53edad254 raise exceptions in the proper form 2009-02-20 10:40:50 -05:00
Rob Crittenden
4476f6b939 The start of machine join 2009-02-19 10:09:07 -05:00
Rob Crittenden
ccf703a2b6 Add new users as a member of the default group 2009-02-19 10:08:11 -05:00
Rob Crittenden
fb3f86f703 Add --all option to show/find, add default attrs to show, cleanup output 2009-02-19 10:07:39 -05:00
Jason Gerard DeRose
7e23ee7cc6 Removed 'Assert False' that was mistakingly left in cert.py; small cleanup in cert.py and ra.py imports 2009-02-17 16:03:10 -05:00
Jason Gerard DeRose
4ab133c3cb Implemented more elegant way for entire plugin module to be conditionally skipped; updated cert.py and ra.py modules to use this 2009-02-17 16:03:10 -05:00
Jason Gerard DeRose
e0fe732318 Added env.enable_ra variable and change cert.py and ra.py plugin modules to register plugins conditionally 2009-02-17 16:03:09 -05:00
Jason Gerard DeRose
97c04c491b Continued cleanup cert/ra plugins 2009-02-17 16:03:09 -05:00
Jason Gerard DeRose
336c4c2caf Removed depreciated ipalib/plugins/b_xmlrpc.py module 2009-02-17 16:03:08 -05:00
Jason Gerard DeRose
d9d5e8b2d5 Some cleanup in cert plugins module, changed to shorter command names all starting with cert_* 2009-02-17 16:03:08 -05:00
Jason Gerard DeRose
eb73a4fef5 Renamed f_ra.py plugin to cert.py 2009-02-17 16:03:07 -05:00
Jakub Hrozek
079f89d461 Add application frontend plugin 2009-02-10 14:10:54 -05:00
Rob Crittenden
2d7e0de5ea Get merged tree into an installalble state.
I have only tested the all, rpms and *clean targets directly.
install may work but the rpm moves a lot of things around for us.

The Apache configuration file isn't in its final state but it works
with the new mod_python configuration.
2009-02-03 15:29:20 -05:00
Jason Gerard DeRose
c2b0c80140 Started work on a much simplified mod_python server 2009-02-03 15:29:05 -05:00
Jason Gerard DeRose
92a150b4f1 Some tweaks in user plugins, ported to new crud base classes 2009-02-03 15:29:05 -05:00
Rob Crittenden
5717c9d668 Applied Rob's errors patch 2009-02-03 15:29:04 -05:00
Jason Gerard DeRose
231f0bd65a Finished reworked cli.CLI class into cli.cli plugin 2009-02-03 15:29:04 -05:00
Jason Gerard DeRose
244346dbcb More work on xmlrpc stuff, started migrated more code to use errors2 instead of errors 2009-02-03 15:29:01 -05:00
Jason Gerard DeRose
24b6cb89d4 Further migration toward new xmlrcp code; fixed problem with unicode Fault.faultString; fixed problem where ServerProxy method was not called correctly 2009-02-03 15:29:01 -05:00
Jason Gerard DeRose
9f48612a56 Sundry work getting ready to switch to new XML-RPC client/server code 2009-02-03 15:29:00 -05:00
Jason Gerard DeRose
46c10d4608 Removed bogus CLI.set_defaults() method that was causing non-required values to get filled in 2009-02-03 15:29:00 -05:00
Jason Gerard DeRose
6aadeb9aea Added Object.params_minus() method; various small tweaks 2009-02-03 15:29:00 -05:00
Jason Gerard DeRose
529819b02b Renamed f_misc.py plugin module to misc.py 2009-02-03 15:29:00 -05:00
Rob Crittenden
98ab09fafc Initial implementation of netgroups 2009-01-19 10:40:12 -05:00
Rob Crittenden
8154131ce1 Use correct function for outputing a string 2009-01-19 10:40:11 -05:00
Rob Crittenden
bc40686b7f Fix rule definition to match new API 2009-01-19 10:40:11 -05:00
Jason Gerard DeRose
fdda31c50b Fixed a problem in the host plugin module; added not in TODO about using Param.query 2009-01-14 22:59:44 -07:00
Jason Gerard DeRose
a10144be24 Updated service plugins module to where it can at least be imported 2009-01-14 22:35:13 -07:00
Jason Gerard DeRose
86b7ebf717 Updated ra plugins module to where it can at least be imported 2009-01-14 22:29:59 -07:00
Jason Gerard DeRose
a41a7f406f Updated pwpolicy plugins module to where it can at least be imported 2009-01-14 22:25:45 -07:00
Jason Gerard DeRose
ec86208a90 Updated passwd plugins module to where it can at least be imported 2009-01-14 22:19:31 -07:00
Jason Gerard DeRose
64c072b7b3 Updated hostgroup plugins module to where it can at least be imported 2009-01-14 22:10:09 -07:00
Jason Gerard DeRose
ec14fbfbc5 Updated host plugins module to where it can at least be imported 2009-01-14 21:55:04 -07:00
Jason Gerard DeRose
29e5a58795 Updated group plugins module to where it can at least be imported 2009-01-14 21:23:20 -07:00
Jason Gerard DeRose
39068ab7ca Fixed automount plugins module to where it can at least be imported 2009-01-14 21:11:14 -07:00
Andrew Wnuk
b3f95b1741 Merged in Andrew's RA plugin 2008-12-21 14:15:53 -07:00
Jason Gerard DeRose
6fdf5d1e7b Merge branch 'master' of git://git.engineering.redhat.com/users/rcritten/freeipa2 2008-12-20 15:00:00 -07:00
Jason Gerard DeRose
285fa3d330 Removed depreciated envtest command from f_user.py 2008-12-17 23:18:14 -07:00
Rob Crittenden
c025ed6404 Remove some debugging statements 2008-12-11 16:06:26 -05:00
Rob Crittenden
e41fcf19fe Raise an error on bad principals instead of printing one when changing passwords
Fix logic in determining what to do with an incoming principal
2008-12-11 10:31:27 -05:00
Rob Crittenden
46bd3974af Don't pass along the kw dictionary we were passed by XML-RPC.
We generally want to just search indexed attributes. We get this list
of attributes from the configuration, use it.
2008-12-10 16:45:07 -05:00
Rob Crittenden
af7b5645af Convert to new output_for_cli() function 2008-12-10 16:42:45 -05:00
Rob Crittenden
c34d2b8923 Add helper for adding Indirect maps.
This creates the map and the key pointing to the map. By default the key
is associated with the auto.master map but it can be overriden.
2008-12-10 14:15:20 -05:00
Rob Crittenden
039ee0fd56 Add a function to show all the maps under a given mapname, def. is auto.master 2008-12-10 14:15:20 -05:00
Rob Crittenden
fc8ac69372 Port plugins to use the new output_for_cli() argument list
Fix some errors uncovered by the nosetests
2008-12-10 14:15:19 -05:00
Jason Gerard DeRose
237c16f0fd Started moving xmlrpc-functions from ipalib.util to ipalib.rpc 2008-11-24 12:51:03 -07:00
Jason Gerard DeRose
2db738e899 Some changes to make reading dubugging output easier 2008-11-24 10:09:30 -07:00
Jason Gerard DeRose
4afee15d4b Calling 'passwd' command now prompts for password using textui.prompt_password() 2008-11-18 13:43:43 -07:00
Jason Gerard DeRose
0a60a6bcc4 Added textui.prompt_password() method; added logic in cli for dealing with 'password' flag in param.flags 2008-11-18 11:30:16 -07:00
Jason Gerard DeRose
5c16047092 user-lock and user-unlock commands now use textui, which finishes the user plugins 2008-11-17 18:15:40 -07:00
Jason Gerard DeRose
12dc0a0aa9 user-find now works again, uses textui 2008-11-17 16:40:42 -07:00
Jason Gerard DeRose
42bf555a3a Started updated user_* commands to use textui 2008-11-17 15:27:08 -07:00
Jason Gerard DeRose
e7ec413158 Moved plugins command from ipalib.cli to ipalib.plugins.f_misc 2008-11-16 19:50:17 -07:00
Jason Gerard DeRose
e059591d6b env command now supports * wildcard for searching 2008-11-14 22:21:36 -07:00
Jason Gerard DeRose
9de56d43f0 env plugin now subclasses from RemoteOrLocal 2008-11-14 21:58:39 -07:00
Rob Crittenden
c513743e7c Add autmount-specific location and default entries 2008-11-14 18:05:29 -05:00
Jason Gerard DeRose
f04aaff97c output_for_cli signature is now output_for_cli(textui, result, *args, **options) 2008-11-12 09:55:11 -07:00
Jason Gerard DeRose
09161e399a Command.get_default() will now fill-in None for all missing non-required params 2008-11-12 01:47:37 -07:00
Jason Gerard DeRose
014af24731 Changed calling signature of output_for_cli(); started work on 'textui' backend plugin 2008-11-12 00:46:04 -07:00
Rob Crittenden
e8adb59fd4 Fix some problems uncovered during automation test work 2008-11-04 16:21:10 -05:00
Rob Crittenden
e825bc7ccb Revive the hostgroup_container and include add/remove hosts in hostgroups plugin 2008-11-04 14:03:43 -05:00
Rob Crittenden
4967002359 Add 'all' option to host-find and pull attributes into a global list 2008-11-04 14:02:42 -05:00
Rob Crittenden
f131480643 Move socket errors from the XML-RPC plugin to the client 2008-11-03 17:38:05 -05:00
Rob Crittenden
d53218a932 Handle exceptions in the command-line instead of in the XMLRPC client plugin 2008-11-03 17:19:29 -05:00
Rob Crittenden
dd9206deb6 Uncomment some logging statements ported over from v1. 2008-11-03 13:14:46 -05:00
Rob Crittenden
62876ccee3 Initial implementation of automount support
Add argument handling to crud.Del
Make get_list handle LDAP scope
2008-10-30 17:29:22 -04:00
Jason Gerard DeRose
6879140db7 Added ipalib.plugins.f_misc with new 'context' Command; moved 'env' Command from cli to f_misc 2008-10-30 02:20:28 -06:00
Jason Gerard DeRose
9f45cdbe2f Merge branch 'master' of git://git.engineering.redhat.com/users/rcritten/freeipa2 2008-10-29 18:10:38 -06:00
Jason Gerard DeRose
2307d4ddd0 Fixed use of depreciated env.get() in b_xmlrpc.py module 2008-10-27 23:56:22 -06:00
Rob Crittenden
54f37503d2 Implement host groups 2008-10-27 12:24:17 -04:00
Rob Crittenden
201a963930 Fix comment 2008-10-27 12:23:49 -04:00
Rob Crittenden
34520981ee Don't allow service-add to create host/ principals 2008-10-24 14:17:20 -04:00
Rob Crittenden
8788afe184 Use posixAccount instead of person to identify users
Add output_for_cli to service-find
2008-10-24 11:41:39 -04:00
Rob Crittenden
6a8026f974 If a password is supplied then this host will be bulk-enrolled
A bulk-enrolled host does not get a kerberos service principal until
enrollment time.
2008-10-24 11:41:38 -04:00
Rob Crittenden
d2b46f176e Use common display function for user-show and user-find.
Add --all option to user-find
Fix command-line help to make sense on searches as well
2008-10-23 14:36:24 -04:00
Rob Crittenden
1daf319a19 Implement the host commands
In order for this to work against a v1 database the update host.update needs to
be applied
2008-10-22 17:54:04 -04:00
Rob Crittenden
245969858d Implement group member add/remove
Add gidNumber to the group command-line
2008-10-21 16:33:34 -04:00
Rob Crittenden
3cbb5c6eeb Don't import servercore 2008-10-21 16:32:45 -04:00
Rob Crittenden
8d07faed4d Update the command-line options to more closely match v1 2008-10-21 16:32:30 -04:00
Rob Crittenden
475265ed37 Implement --all option to display all attributes.
Still need to strip the dn when not doing all.
2008-10-21 09:32:48 -04:00
Rob Crittenden
8c54f730c0 Framework for doing password changes
Need mechanism to prompt for new password twice and verify they are the same
2008-10-20 22:41:53 -04:00
Rob Crittenden
d615e4dafb Port pwpolicy plugin to use b_ldap
Add basic output_for_cli() function to user-show
2008-10-20 16:12:19 -04:00
Rob Crittenden
ae8370be44 Port f_service to LDAP backend
Add new keyword, 'filter', that can be passed to the search function.
This is globbed onto the filter that is auto-created.
2008-10-17 19:20:23 -04:00
Rob Crittenden
b045f22069 Add mod_python-based XML-RPC server.
Use -e kerberos on the command-line to use the mod_python server, otherwise
it defaults to use the simple-server URL.
2008-10-16 23:33:44 -04:00
Rob Crittenden
f777f72de6 Use the search fields from the configuration when searching
Generalize the attribute -> objectclass search helper
2008-10-16 15:00:30 -04:00
Rob Crittenden
5748fce84c Remove references to ipa_server.* and port group plugin to ldap backend 2008-10-16 10:59:03 -04:00
Rob Crittenden
12f1e7fdf7 Remove all references to ipa_server.* from user plugin 2008-10-16 10:32:20 -04:00
Rob Crittenden
1a8317ff74 Port group-add to use LDAP backend
Have create and update return the record that was just added/modified
2008-10-15 17:46:01 -04:00
Rob Crittenden
14a33d4619 Fix some remaining merge issues and don't use forward() in user-*lock() 2008-10-15 16:50:46 -04:00
Rob Crittenden
3268b65ae0 Initial implementation of a generic search routine. 2008-10-15 16:12:27 -04:00
Jason Gerard DeRose
af7c0ee595 Resolved conficts in Rob's merge 2008-10-15 12:24:15 -06:00
Rob Crittenden
789a248daa Port user-mod to use ldap update() method 2008-10-15 09:58:29 -04:00
Rob Crittenden
f7c044495a Port user_del to CrudBackend
Override output_for_cli() to generate nicer output
2008-10-14 22:48:57 -04:00
Rob Crittenden
cfc8450efd Port user-show to new CrudBackend framework 2008-10-14 22:22:01 -04:00
Rob Crittenden
1c3f81852c Move some functionality from user-add to the backend ldap create function 2008-10-14 21:28:06 -04:00
Jason Gerard DeRose
0ebdbaa450 Merge branch 'master' of git://git.engineering.redhat.com/users/rcritten/freeipa2 2008-10-14 15:45:57 -06:00
Rob Crittenden
30664cde88 Move some functionality from user-add to the backend ldap create function 2008-10-14 17:46:36 -04:00
Martin Nagy
ff88652a40 Convert string values to boolean when generating environment 2008-10-14 21:22:44 +02:00
Jason Gerard DeRose
9788800aa4 More work on making user-add use Backend.ldap 2008-10-14 02:23:56 -06:00
Jason Gerard DeRose
1480224724 Started roughing out user_add() using api.Backend.ldap; added Command.output_for_cli() to take care of formatting print output 2008-10-14 01:45:30 -06:00
Jason Gerard DeRose
b6dcd183a6 CLI now maps Param.cli_name to Param.name 2008-10-13 20:31:10 -06:00
Rob Crittenden
6d2705b363 Implement user lock and unlock 2008-10-13 17:17:00 -04:00
Rob Crittenden
19465318ce Fix up a comment 2008-10-13 15:17:31 -04:00
Rob Crittenden
fc9f057792 Initial implementation of password policy 2008-10-13 15:01:08 -04:00
Rob Crittenden
0ebaad6462 Do a more specific search for the user 2008-10-13 14:59:48 -04:00
Rob Crittenden
250734aea5 Fix syntax error 2008-10-10 14:38:09 -04:00
Rob Crittenden
39ad5ccffa Stub out delegations
Add ACI class
2008-10-11 00:49:05 -04:00
Rob Crittenden
75bad44c27 Enable the verbose flag to pass thru xmlrpc 2008-10-10 05:23:00 -04:00
Rob Crittenden
42cdca3e83 Use new options handler 2008-10-10 03:40:52 -04:00
Rob Crittenden
dbe49423ab Start service principal plugin 2008-10-10 03:36:57 -04:00
Rob Crittenden
5d2a99925d Implement group-mod 2008-10-10 03:36:57 -04:00
Rob Crittenden
8a97b3e8a8 Implement group-del 2008-10-10 03:36:57 -04:00
Rob Crittenden
83bb41faeb Mechanism to convert from xmlrpclib.Fault to an IPAError exception
Include slew of new exceptions, not all of which are used yet
2008-10-10 03:36:56 -04:00
Rob Crittenden
672c07566d Implement user-del
rename is_user_unique() to user_exists()
2008-10-10 03:36:56 -04:00
Jason Gerard DeRose
b2b5b904bc Made package-level docstrings more consistent so they read better in generated documentation 2008-10-07 20:07:16 -06:00
Jason Gerard DeRose
c747c12fb2 Merge branch 'master' of git://git.engineering.redhat.com/users/rcritten/freeipa2 2008-10-07 17:00:36 -06:00
Martin Nagy
4a68c719f0 Implement config file reading 2008-10-08 00:07:44 +02:00
Rob Crittenden
db9d8dd3e0 Implement a real user_find and move existing user_find to user_show 2008-10-07 06:15:34 -04:00
Rob Crittenden
e012e860b4 Implement user-mod 2008-10-07 04:31:22 -04:00
Rob Crittenden
69bc5ad77a Add some more supporting functions
Do a little bit more error handling and checking
2008-10-07 02:10:15 -04:00
Rob Crittenden
cb795fa14b Add group plugin, routine to get cn=ipaconfig 2008-10-04 05:17:11 -04:00
Rob Crittenden
7e4b0a072e Implement user-find and user-add backend functions so they work over XML-RPC
Change port to 8880 to not conflict with a running IPA v1 instance
Encode incoming values from unicode as utf-8 before sending to LDAP
2008-10-04 01:50:59 -04:00
Jason Gerard DeRose
3ffbaac64c Backend.xmlrpc and simple-server.py now use the xmlrpc_marshal() and xmlrpc_unmarshal() functions respectively 2008-10-02 19:42:06 -06:00
Jason Gerard DeRose
6000b6b5c6 Implemented basic Command.forward() method 2008-10-02 17:02:24 -06:00
Jason Gerard DeRose
0e137110c7 Started on skeleton for xmlrcp client/server 2008-10-02 16:12:19 -06:00
Jason Gerard DeRose
2507b7c674 Clarified docstrings in */plugins/__init__.py; renamed ipa_server/plugins/ipa_ldap.py to b_ldap.py 2008-10-01 16:17:02 -06:00
Jason Gerard DeRose
c846c7d91f Removed the everything except the envtest command and the user related plugins from f_user.py 2008-10-01 16:10:41 -06:00
Jason Gerard DeRose
e963be1dda Renamed plugins/example.py to plugins/f_user.py 2008-10-01 15:56:04 -06:00
Jason Gerard DeRose
cc93e45e13 Removed depreciated override.py module 2008-10-01 15:53:21 -06:00
Jason Gerard DeRose
af6653f607 Added skeleton for kerberos backend 2008-10-01 15:50:04 -06:00
Jason Gerard DeRose
7ee0ccd90d Fixed unit tests; changed example.py so it doesn't import servercore 2008-09-30 20:27:52 -06:00
Rob Crittenden
77e6c99f9d Migrate to new source tree layoute 2008-09-30 19:37:35 -06:00
Rob Crittenden
b965e558b5 Rebase XML-RPC client and server
Fix error handling in server to return exceptions generated in library code
2008-09-30 19:37:35 -06:00
Martin Nagy
afdc721038 Add support for environment variables, change tests accordingly 2008-09-29 17:45:14 -06:00
Jason Gerard DeRose
0c3ebe0bef 367: Implementing basics of loading plugins out of tree 2008-09-25 23:21:41 +00:00
Jason Gerard DeRose
ac88500382 366: Ported user_* example Commands to crud base classes; added user_show example command 2008-09-25 03:58:42 +00:00
Jason Gerard DeRose
e84dd7a69d 357: Some experimenting with the example plugins 2008-09-25 00:58:16 +00:00
Jason Gerard DeRose
4747563a80 356: Modified Method.get_options() to now pull from self.obj.params(); updated unit tests for Method.get_options() 2008-09-25 00:42:38 +00:00
Jason Gerard DeRose
4e8ff5c656 318: Renamed all references to 'public' module to 'frontend' 2008-09-24 00:01:29 +00:00
Jason Gerard DeRose
47e4606a98 308: Fixed broken example plugin user_add 2008-09-21 21:55:21 +00:00
Jason Gerard DeRose
2d83614006 305: Ported cli.py to changes in public.py 2008-09-21 19:00:41 +00:00
Jason Gerard DeRose
5a1abcdf4f 291: Temporarily reverted Rob's changes in public.py and plugins/examples.py 2008-09-13 00:22:01 +00:00
Jason Gerard DeRose
0e60036bb4 290: Applyied Rob's patch 2008-09-12 16:36:04 +00:00
Jason Gerard DeRose
553b0c596d 264: Cleaned up docstrings on all example plugins 2008-09-04 09:22:18 +00:00
Jason Gerard DeRose
b16deabdff 256: Fixed cli.help plugin so it looks up commands in CLI instead of API 2008-09-04 05:18:14 +00:00
Jason Gerard DeRose
74a3cf8d28 200: Added plugins/override.py with an example of overriding a plugin 2008-08-26 19:43:56 +00:00
Jason Gerard DeRose
6226837eea 199: Updated user_login and user_initials example plugins to use Option.default_from 2008-08-26 19:23:50 +00:00
Jason Gerard DeRose
2fc3819bec 191: Removed ipalib/api.py module; standard plugable.API instance is now in ipalib.__init__.py 2008-08-25 23:35:29 +00:00
Jason Gerard DeRose
af52671e13 187: Renamed plubic.obj to Object; reworked plublic.Object unit tests to use ClassChecker 2008-08-22 21:50:53 +00:00
Jason Gerard DeRose
5bf6a9eb09 185: Renamed public.prop to Property 2008-08-22 20:32:23 +00:00
Jason Gerard DeRose
a1b5d928fb 184: Renamed public.mthd class to Method 2008-08-22 20:23:19 +00:00
Jason Gerard DeRose
b0ec8fe551 182: Renamed plublic.cmd base class to Command 2008-08-15 19:49:04 +00:00
Jason Gerard DeRose
99450358af 181: Changed docstrings on example plugins to use itial capital 2008-08-15 19:19:42 +00:00
Jason Gerard DeRose
6924d5e25e 144: Made properties in example plugins all required 2008-08-13 05:25:00 +00:00
Jason Gerard DeRose
0fed74b56d 138: Added ProxyTarget.doc property; CLI.print_commands() now uses cmd.doc instead of cmd.get_doc() 2008-08-13 02:34:36 +00:00
Jason Gerard DeRose
c0b5069fa0 133: Renamed run.py to api.py 2008-08-13 01:26:30 +00:00
Jason Gerard DeRose
12d662c1b7 131: Renamed Plugins/ to plugins/ 2008-08-13 01:18:00 +00:00