=pod
=head1 History revision for DiCoP-Base
This document details the complete changes from v3.00 onwards.
See the CHANGES files in the DiCoP-Server package for the full version history.
=head2 2004-12-21 (Base v3.00 build 80)
=over 2
=item fixed
deamon: ignore requests for favicon.ico
wcr lib: Total: lines 8711, words 30863, chars 221535
1499 tests ()
=back
=head2 2004-12-20 (Base v3.00 build 79)
=over 2
=item fixed
add report_leak hooks into main accept loop and Handler.pm
wcr lib: Total: lines 8697, words 30818, chars 221212
1499 tests ()
=back
=head2 2004-12-16 (Base v3.00 build 78)
=over 2
=item fixed
Hash: reset error upon read() to force rehash
wcr lib: Total: lines 8665, words 30757, chars 220394
1496 tests (hash)
=back
=head2 2004-12-15 (Base v3.00 build 77)
=over 2
=item added
Cache: get_oldest(), statistics()
=item fixed
Base doesn't need data/
Request: correctly use cache with limit
Cache.pm:croak on unknown options (prevent mispelings)
touching the oldest item is O(N) (instead of O(Nlog N))
touching a random item is O(1) (instead of O(Nlog N))
finding oldest element is O(N) instead of O(N*logN)
fix bug with misspeling of internal keys
convert t/cachepm.t and t/eventpm.t to Test::More
wcr lib: Total: lines 8662, words 30738, chars 220245
1494 tests (cache)
=back
=head2 2004-12-09 (Base v3.00 build 76)
=over 2
=item added
Request: allow req's to override sort order, type (cmp, <=> and dir)
Handler: implement sorting on arbitrary fields in both directions, and
on numerical/string values in sortorder()
handle #selfreq# in templates
=item fixed
Handler: name_from_type() handle inputs like 'jobtypes' (already 's')
Handler: gentable(): handle a filter argument to filter things
wcr lib: Total: lines 8553, words 30371, chars 217744
1493 tests (name_from_type, sort oder)
=back
=head2 2004-12-07 (Base v3.00 build 75)
=over 2
=item added
Handler: add flushdata(), constructfile_names()
=item fixed
Handler: use generic storage access
wcr lib: Total: lines 8477, words 30066, chars 215534
1487 tests ()
=back
=head2 2004-12-06 (Base v3.00 build 74)
=over 2
=item fixed
retract change to check_peer() (caller should prepend 'req0000 ')
wcr lib: Total: lines 8437, words 29920, chars 214430
1487 tests ()
=back
=head2 2004-11-30 (Base v3.00 build 73)
=over 2
=item fixed
Handler: msg 457 generated by check_peer() was missing a 'req0000 '
Handler: document check_peer()
wcr lib: Total: lines 8437, words 29923, chars 214443
1487 tests ()
=back
=head2 2004-11-25 (Base v3.00 build 72)
=over 2
=item fixed
use POSIX (); vs use POSIX; to save memory (a few hundred KB)
wcr lib: Total: lines 8430, words 29896, chars 214254
1487 tests ()
=back
=head2 2004-11-23 (Base v3.00 build 71)
=over 2
=item added
Base: check_templates()
=item fixed
PREREQ in Makefile.PL
wcr lib: Total: lines 8430, words 29887, chars 214209
1487 tests ()
=back
=head2 2004-11-16 (Base v3.00 build 70)
=over 2
=item added
Template: parameter 'virtual' for fields
=item fixed
Item: newly created items get the current time as '_modified'
Item: use Carp when complaining about accessing non-existing keys
Template: warn about illegal characters in field names
Template: avoid double double keys in knownfields
Template: fields(): do not return fields marked as virtual
wcr lib: Total: lines 8402, words 29787, chars 213436
1486 tests (Item->{_modified}, fields())
=back
=head2 2004-11-15 (Base v3.00 build 69)
=over 2
=item added
Template: parameter 'sort' for fields with "valid" lists
=item fixed
wcr lib: Total: lines 8357, words 29568, chars 212010
1482 tests ()
=back
=head2 2004-11-11 (Base v3.00 build 68)
=over 2
=item added
Base: connectserver() - send URL or PARAMS to remote server
Base: loadconnector() - load wget or libwww and create user-agent
wcr lib: Total: lines 8357, words 29568, chars 212010
1482 tests (connectserver)
=back
=head2 2004-11-03 (Base v3.00 build 67)
=over 2
=item fixed
clear last_error before handling a request
Item.pm:streamline : call gettemplate() directly
wcr lib: Total: lines 8162, words 28915, chars 206866
1480 tests ()
=back
=head2 2004-11-03 (Base v3.00 build 66)
=over 2
=item fixed
always display short name in file/dir selectors (sigh)
amended TODO
wcr lib: Total: lines 8164, words 28921, chars 206860
1480 tests ()
=back
=head2 2004-10-28 (Base v3.00 build 65)
=over 2
=item fixed
Request: as_request_string() preserves empty params
raise max-request-length limit from 64 to 128 Kbyte
wcr lib: Total: lines 8164, words 28921, chars 206861
1480 tests (fix tests for empty params in Requests)
=back
=head2 2004-10-25 (Base v3.00 build 64)
=over 2
=item added
Template: fields_of_type()
=item fixed
fix: refresh and cancel buttons on dir/file selector pages
display short names in dir/file selector
includeform: properly handle bool fields
wcr lib: Total: lines 8164, words 28919, chars 206853
1478 tests ()
=back
=head2 2004-10-21 (Base v3.00 build 63)
=over 2
=item fixed
Item: put() calls checkfield()
Template: normalize 'bool' fields to be 'on' or ''
get_as_string: return bool fields as "No"/"ς" (looks like "V")
wcr lib: Total: lines 8131, words 28799, chars 206030
1475 tests ()
=back
=head2 2004-10-20 (Base v3.00 build 62)
=over 2
=item fixed
Base: fix error output in case of missing Linux::Cpuinfo.pm
add use bytes; for a2h(), h2a() and decode()/encode()
Hash: return proper error if hash is empty (should not happend though)
wcr lib: Total: lines 8121, words 28749, chars 205735
1475 tests ()
=back
=head2 2004-10-14 (Base v3.00 build 61)
=over 2
=item added
support for layouts (extra plus style)
=item fixed
encode/decode 'path' in dir/file form (fix bug that '_' in filenames
was not possible)
wcr lib: Total: lines 8111, words 28722, chars 205506
1473 tests ()
=back
=head2 2004-10-07 (Base v3.00 build 60)
=over 2
=item added
Template: fix '"" is not numeric' in line 175
extract user_agent from headers and set it to be used later
wcr lib: Total: lines 8054, words 28503, chars 203725
1473 tests ()
=back
=head2 2004-10-06 (Base v3.00 build 59)
=over 2
=item added
keys 'description', 'addoption', 'editoption' to Template system
=item fixed
Base: undef warning in line 279 (undef values)
wcr lib: Total: lines 8053, words 28494, chars 203653
1473 tests (description, addoption, editoption)
=back
=head2 2004-09-30 (Base v3.00 build 58)
=over 2
=item fixed
small cleanups
wcr lib: Total: lines 8016, words 28323, chars 202565
1465 tests ()
=back
=head2 2004-09-29 (Base v3.00 build 57)
=over 2
=item added
support editindend and addindend in forms
Handler: formatstring(): embed object fields into a format template
=item fixed
Base: allow empty params in parseFormArgs() to make changing fields to
the empty string possible
Handler: buglet in gentable that barfed on '<td align="right">' when
inserting class
removed unused second param from optionlist()
Handler: optionlist() now supports option w/o name= (HTML compliant)
wcr lib: Total: lines 8020, words 28340, chars 202830
1465 tests (test for make_config(), editindend, addindend, optionlist,empty params)
=back
=head2 2004-09-28 (Base v3.00 build 56)
=over 2
=item added
pass argument "proto" to Net::Server, too
=item fixed
wcr lib: Total: lines 7880, words 27837, chars 199029
1450 tests ()
=back
=head2 2004-09-27 (Base v3.00 build 55)
=over 2
=item fixed
Handler: #type# => #servertype#
Handler: replace request param templates in html-table output, too
wcr lib: Total: lines 7879, words 27822, chars 198933
1450 tests ()
=back
=head2 2004-09-23 (Base v3.00 build 54)
=over 2
=item fixed
Handler: request_file(): handle case that client came via proxy
fix in cpuinfo regexp
wcr lib: Total: lines 7877, words 27816, chars 198878
1450 tests ()
=back
=head2 2004-09-22 (Base v3.00 build 53)
=over 2
=item fixed
handle "for_req0001,req0002" in info requests
workaround Linux::Cpuinfo clobbering up $/
fallback in status: handle undefined request type
wcr lib: Total: lines 7873, words 27798, chars 198708
1450 tests ()
=back
=head2 2004-09-15 (Base v3.00 build 52)
=over 2
=item added
Hash: compare() - compare two hashes
Hash: Hash contents of a scalar when given a reference
Template: check fields of type IP/MASK being valid and set error()
Handler: check_peer() - check IP adress of connection client
=item fixed
Security: undef warning in _ip2hex()
wcr lib: Total: lines 7868, words 27758, chars 198495
1450 tests (Hash, check IP)
=back
=head2 2004-09-14 (Base v3.00 build 51)
=over 2
=item added
Securtiy: ip_matches() - match IP and subnet mask against a check IP
check file locations in request_file() only if no_file_check is undef
=item fixed
converted t/security.t to Test::More
only use auth as info if info was not already set
speling and. gramar fixes. Amended TODO
wcr lib: Total: lines 7829, words 27666, chars 197790
1435 tests (ip_matches)
=back
=head2 2004-09-13 (Base v3.00 build 50)
=over 2
=item added
authenticate_user() and request_auth() from Data
=item fixed
authenticate_user() uses generic access to userlist
in case auth request was send in, use that as $info (help proxy)
wcr lib: Total: lines 7781, words 27463, chars 196551
1414 tests ()
=back
=head2 2004-09-12 (Base v3.00 build 49)
=over 2
=item fixed
better error message in case of non-existant user
require auth request only for requests that have auth=1 instead of
matching /^(form|status)$/ - that fixes cmd_help requests
parameter handling for finish_connect()
wcr lib: Total: lines 7641, words 26734, chars 191501
1414 tests ()
=back
=head2 2004-09-09 (Base v3.00 build 48)
=over 2
=item added
Base: cpuinfo() (needed by Client and Proxy)
Handler: request_file() (needed by Proxy and Server)
=item fixed
preload http/ftp protocols in LWP for chroot environments
wcr lib: Total: lines 7586, words 26456, chars 189442
1414 tests ()
=back
=head2 2004-09-08 (Base v3.00 build 47)
=over 2
=item added
Config: allowed_keys with undef entries warn with msg 802 (obsolete)
track time for all connects, average connect time and time of last connect
support default_style from config
=item fixed
change trclass replacement to set class for <td>, not <tr> (<tr> seems not
to overwrite the color of <td> :-/
wcr lib: Total: lines 7521, words 26246, chars 187874
1414 tests ()
=back
=head2 2004-09-07 (Base v3.00 build 46)
=over 2
=item added
Handler: pre_connect(), status_config()
Config: add check() etc
converted t/config.t to Test::More
=item fixed
init some fields (last_flush, flush_time, self etc) in init()
better die() message when message file cannot be loaded
Handler: finishrequest() => finish_connect()
show only name of directory, not complete path, when browsing directories
wcr lib: Total: lines 7445, words 25955, chars 185635
1407 tests (init fields)
=back
=head2 2004-09-02 (Base v3.00 build 45)
=over 2
=item added
Template: support for min/max
=item fixed
wcr lib: Total: lines 7315, words 25494, chars 182227
1401 tests (min/max tests)
=back
=head2 2004-09-01 (Base v3.00 build 44)
=over 2
=item added
optionlist(): support multiple filter words as in 'type=foo,bar'
Handler: optionlist(): replace templates with lists (necc. for add/edit
forms of charsets)
Template: valid => 'method_name' support
Template: support for 'selector' property of fields
Template: support for insert()
Handler: name_from_type() to turn 'proxy' into 'proxies'
=item fixed
Item: require Template instead of use, lazy load
wcr lib: Total: lines 7280, words 25260, chars 180834
1396 tests ()
=back
=head2 2004-08-31 (Base v3.00 build 43)
=over 2
=item added
Pattern.pm:doc about all the possible pattern fields
Template: a bit more doc plus an example
Template: property "filter"
Handler: filter option lists according to template "filter"
support for bitmasks (editfield_check.inc)
=item fixed
default value '0' possible in forms (got changed to '')
shut down a unitialized warning in File::Spec in testsuite
allow comments inside multi-line text definition blocks, too
allow '\\', '[' and ']' in text definitions
wcr lib: Total: lines 7111, words 24528, chars 175887
1396 tests (changeable fields are noadd => 1)
=back
=head2 2004-08-30 (Base v3.00 build 42)
=over 2
=item added
property 'changable' to Template - fields that are changable, but
are not automatically put on edit forms
=item fixed
discard auth info when special submit buttons are pressed (for
'Browse', 'Refresh' etc)
Base: encode() also encode \r
wcr lib: Total: lines 6874, words 23480, chars 169635
1394 tests (changeable fields)
=back
=head2 2004-08-26 (Base v3.00 build 41)
=over 2
=item added
Item, Template: support type 'list'
Template: doc about valid keys
Pattern: sort_order(), default values for 'sort' and 'sort_by'
support for 'Refresh' button in generated forms
support "submit_cmd_form;type_foo=>" (empty params) in button names
allow listing ".files" in dir listings (that needs to be an option)
Pattern: support "carry"
=item fixed
special casing for /extra\d/ keys in get_as_string
Input field names in generated forms have ' ' instead of ' '
Template: allow only known key names (guard against typos)
croak() at errors evaling templates/definitions
wcr lib: Total: lines 6832, words 23294, chars 168408
1392 tests (type 'list', 'refresh' in templates, submit buttons)
=back
=head2 2004-08-24 (Base v3.00 build 40)
=over 2
=item added
Item: handle fields of type 'time' in get_as_string()
Template.pm:document valid properties for fields
param $no_error to construct-chain (Item, Template)
=item fixed
amended INSTALL, README, BUGS
require Perl v5.8.1 - not v5.8.3
wcr lib: Total: lines 6645, words 22683, chars 164094
1384 tests (get_as_string)
=back
=head2 2004-08-23 (Base v3.00 build 39)
=over 2
=item added
Template: constructfield(): construct objects from lass names
includeform(): #safevalue#, #cmd#, #id# and #formname#
Handler: move code to split submit name to convertsubmit_button()
better output on fatal errors inside the status handler
title to dirs/files in listing table
=item fixed
get_as_string() does the right thing for fields of type foo_id
check for invalid browse dir/paths
make files or dirs selectable in filelist, depending on type_(file|dir)
dir/file listing works now when used from inside edit/add forms
allow key 'editlen' for template fields
wcr lib: Total: lines 6539, words 22195, chars 161339
1383 tests (convertsubmit_button())
=back
=head2 2004-08-19 (Base v3.00 build 38)
=over 2
=item added
Item.pm:construct () does construct foo_id object ref from ID
Item.pm:parent ()
warn upon empty filenames when reading templates
=item fixed
Request.pm and Pattern.pm:template () => template_name() to not
interfere with template() from Item.pm
Item.pm:simplified logic to get template
gettemplates() => gettemplate()
wcr lib: Total: lines 6431, words 21653, chars 157473
1375 tests ()
=back
=head2 2004-08-18 (Base v3.00 build 37)
=over 2
=item fixed
gen_table: use $item->fields(), not $item->keys()
includeform() and status(): use get_object($req) instead of get_foo()
t/basics.t and t/daemon.t
wcr lib: Total: lines 6394, words 21537, chars 156628
1373 tests ()
=back
=head2 2004-08-17 (Base v3.00 build 36)
=over 2
=item added
t/basics.t and t/mailpmt.
=item fixed
converted t/daemon.t to Test::More
split lib/daemon into lib/basics and lib/daemon to avoid Client
having to load Net::Server
move mail-sending code to Dicop::Mail so that Client doesn't
need to depend on Mail::Sendmail just because it uses Dicop::Handler
Linux::Cpuinfo not needed in PREREQ
Handler.pm:remove needless "use Cwd;"
wgte.pm:use Dicop::Base::read_file, not Dicop
Base: write_file() generate path unless it already exists
wcr lib: Total: lines 6369, words 21439, chars 155992
1373 tests (fields())
=back
=head2 2004-08-16 (Base v3.00 build 35)
=over 2
=item added
support for #FOO_list# in requests without an ID
Item: fields()
Template: fields(), {fake_keys} support
print out used config file to STDERR upon start
=item fixed
guard against wrong #FOO_list# in templates
drop support for BGCOLOR in template replacements
Base: replace_templates(): use $item->fields() if passed an object
adjust PREREQUISITES in Makefile.PL:BigInt v1.71, no Wordlist
wcr lib: Total: lines 6262, words 21099, chars 153355
1380 tests (fields())
=back
=head2 2004-08-12 (Base v3.00 build 34)
=over 2
=item added
replace #foo_list# by $self->foo_list($item) in status pages
=item fixed
sort objects in option list by numerical ID
support for #checkedvalue# in edit field templates for checkboxes
wcr lib: Total: lines 6176, words 20770, chars 150984
1374 tests ()
=back
=head2 2004-08-11 (Base v3.00 build 33)
=over 2
=item added
make Dicop::Item::template() work with classname as argument
README.win32
Handler: class_from_type()
include_edit_form() can handle #add-object-fields# properly
Template: check for valid known good field params (editable etc)
Template: description(), help()
added keys 'noadd', 'name' to Template
=item fixed
object lists in include_form now have "name (description)" if possible
Item: error() sets {_error} from given param if neccessary
fixed shared ID space for subclasses in Item.pm
Makefile.PL:delete unnecc. "tests => ..." line (fix for win32)
wcr lib: Total: lines 6173, words 20747, chars 150777
1374 tests (shared ID space, tests for add-object-fields, Template)
=back
=head2 2004-08-05 (Base v3.00 build 32)
=over 2
=item added
Item: fromstring_form() - construct Math::String from string
=item fixed
in case of error requests, don't try to auth client
Handler: guard against illegal objects in includeform()
Handler: includeform(): use get_as_string() instead of get()
Hash.pm:support error(), return error in as_hex()
wcr lib: Total: lines 6031, words 20270, chars 147246
1351 tests ()
=back
=head2 2004-07-29 (Base v3.00 build 31)
=over 2
=item fixed
Handler: renamed includeedit_form() => includeform()
includeform() also handle #add-object-fields#
read_table_template(): accept also templates w/o TR or TD
include_edit_fields(): sort edit fields by editrank and then by name
generate options list form list of valid values
#fieldname# was empty
wcr lib: Total: lines 5954, words 19978, chars 145137
1348 tests (read_table_template())
=back
=head2 2004-07-28 (Base v3.00 build 30)
=over 2
=item added
Handler: AUTOLOAD() from Dicop-Server's Data.pm
Handler: get_id_list()
Template.pm:field ()
Handler: split read_template() into find_template() and readtemplate()
=item fixed
include fields from tpl/ into edit form, fall back to string
wcr lib: Total: lines 5887, words 19696, chars 143273
1346 tests (fields())
=back
=head2 2004-07-21 (Base v3.00 build 29)
=over 2
=item added
Handler: status() include item's fields, too
=item fixed
default HTML title is 'Dicop - '
detaint the strings in from_string() for eval
wcr lib: Total: lines 5725, words 19158, chars 139474
1342 tests (taint test)
=back
=head2 2004-07-20 (Base v3.00 build 28)
=over 2
=item added
Handler: includeedit_form() - generate list of form fields to edit
Item: template()
=item fixed
wcr lib: Total: lines 5712, words 19106, chars 139132
1335 tests ()
=back
=head2 2004-07-19 (Base v3.00 build 27)
=over 2
=item fixed
Handler: flush(): call flushdata()
wcr lib: Total: lines 5636, words 18863, chars 137237
1333 tests ()
=back
=head2 2004-07-12 (Base v3.00 build 26)
=over 2
=item added
Handler: call replacemail_templates() from email()
=item fixed
Handler: replace #time# in mailtemplate with readable time instead timestamp
wcr lib: Total: lines 5628, words 18845, chars 137100
1333 tests ()
=back
=head2 2004-07-08 (Base v3.00 build 25)
=over 2
=item added
=item fixed
Template: fix check for ip/mask types in check_field()
wcr lib: Total: lines 5622, words 18834, chars 137002
1333 tests ()
=back
=head2 2004-07-07 (Base v3.00 build 24)
=over 2
=item added
Template: implement checks in check_field() (maxlen, filter some)
=item fixed
wcr lib: Total: lines 5622, words 18834, chars 137001
1327 tests ()
=back
=head2 2004-07-06 (Base v3.00 build 23)
=over 2
=item added
Template: check_field() and construct_field() stubs
=item fixed
Item: the error is stored in {_error}, not {error}!
remove unnecc. key _error init in Template.pm
Item: can read in string form with '=>' instead of '='
can read in string form with ' { ... multilinecode ... }
more doc in Item.pm
Handler.pm:instances of {error} vs. {_error}
wcr lib: Total: lines 5549, words 18594, chars 135344
1324 tests ()
=back
=head2 2004-07-05 (Base v3.00 build 22)
=over 2
=item added
use Template (if it exists) to init object fields and to check
for can_change($field)
sample entry in t/def/objects.def
Dicop::Data::Template
Item.pm:loadtemplates ()
=item fixed
parse "fieldname => ..." in objects def as "eval($val)"
wcr lib: Total: lines 5507, words 18469, chars 134435
1318 tests (itempm.t: template tests, t/template.t)
=back
=head2 2004-07-03 (Base v3.00 build 21)
=over 2
=item added
Handler: loadobject_definitions()
honour cfg->{language} setting when loading messages
=item fixed
Handler: move message loading into loadmessages()
more error checks for constructing patterns
make ID allocation generic on classname
move the msg/ and logs/ directories into t/ where they belongs
move requests.def to def/ and modify Handler to load it from def_dir
wcr lib: Total: lines 5289, words 17857, chars 129524
1310 tests (id space seperation)
=back
=head2 2004-06-24 (Base v3.00 build 20)
=over 2
=item added
constructitem() from Data.pm
cfglevel() to convert "1+2+4" to 7
aftercfg_read() and afterload() called by _init()
=item fixed
POD in CHANEGS
fixed TODO list to cover only Dicop::BASE
make init() generic and re-usable
wcr lib: Total: lines 5273, words 17827, chars 129299
1303 tests (cfglevel)
=back
=head2 2004-06-21 (Base v3.00 build 19)
=over 2
=item fixed
forgot to include t/rand_req.t into MANIFEST
Dicop::Handler doesn't need to include Dicop::Client
wcr lib: Total: lines 5274, words 17809, chars 129459
1299 tests
=back
=head2 2004-06-17 (Base v3.00 build 18)
=over 2
=item added
Pattern: throw error for negative pattern matches
Pattern: added 'class' (admin|work|status|stats or invalid)
=item fixed
Request: handle "var_" as "var = ''" and not "var = [ ]"
check that a requests class is on of the allowed types only
Item: skip comments inside the {} blocks, too
Request/Pattern: continue match until match w/o error is found
wcr lib: Total: lines 5268, words 17788, chars 129320
1299 tests (pattern errors, pattern class, empty request param)
=back
=head2 2004-06-16 (Base v3.00 build 17)
=over 2
=item added
Pattern.pm:replace request-FIELD by FIELD_content when
title(), output() or template() is called
Request.pm:call patttern's title(), output() and template()
with $self as param
=item fixed
Base: replace_templates(): cluck() on non-ref as param
Handler: put request-errors not into forms
Handler: put loading request patterns in a subroutine
Handler: allow undef for $name in convertbrowser_request()
Request: is_form() return false on error
Pattern: better default template file name
wcr lib: Total: lines 5224, words 17628, chars 128185
1285 tests (request pattern tests, Handler.pm)
=back
=head2 2004-06-15 (Base v3.00 build 16)
=over 2
=item added
Request patterns can have regular expressions for matching
DEFAULT_PATTERNS to Dicop::Request (for testsuite)
=item fixed
use msg 462 for invalid requests instead of hardcoded string
better error message from Requests (no double ID or double \n)
fixed Pattern check for nonempty/required params to actually work
Pattern.pm:check for additional (unwanted) params and complain
removed obsolete doc about find_title()
Pattern.pm:removed unnecc. check_params()
wcr lib: Total: lines 5163, words 17453, chars 126683
1277 tests (request pattern tests)
=back
=head2 2004-04-27 (Base v3.00 build 15)
=over 2
=item fixed
moved Client.pm, client.t to Dicop-Server
if no matching pattern for a request was found, throw an error
pod fixes for Requests and Patterns
Dicop/Data/Request.pm moved to Dicop/Request.pm
wcr lib: Total: lines 5177, words 17538, chars 127218
1272 tests ()
=back
=head2 2004-02-25 (Base v3.00 build 14)
=over 2
=item fixed
Base.pm:document decode()
move cfg_default() from Handler.pm to Base.pm
Event.pm:add local to $\ = "\n"
wcr lib: Total: lines 6297, words 22084, chars 160059
2190 tests ()
=back
=head2 2004-02-24 (Base v3.00 build 13)
=over 2
=item fixed
make wcr use strict and warnings
remove SIGNATURE and doc about it, it is too cumbersome and the
integrity of the packages is already ensured by the detached sig
wcr lib: Total: lines 5985, words 21202, chars 152648
2190 tests ()
=back
=head2 2004-02-10 (Base v3.00 build 12)
=over 2
=item added
handle "submit-FOO" buttons in forms to carry additional per-button parameters
status_dir: make directories/files selectable, on selection execute request
status_dir: exclude .files (todo: make optional) and some fix-ups
=item fixed
on handling handle request, fall back to status() if all else fails
wcr lib: Total: lines 5985, words 21202, chars 152648
2190 tests (read_dir)
=back
=head2 2004-02-10 (Base v3.00 build 11)
=over 2
=item added
status_dir(): handle dir listings
read_dir()
=item fixed
converted t/basepm.t to Test::More
wcr lib: Total: lines 5985, words 21202, chars 152648
2190 tests (read_dir)
=back
=head2 2004-02-09 (Base v3.00 build 10)
=over 2
=item added
Handler.pm:load request patterns at startup, and use them to
verify and construct requests
handle_requests() loads the necc. template for each request
and makes them available as {tpl} and {tplrow} for tables
prepend config var {title} to of HTML title
Request: is_info(), is_auth(), is_form(), is_request()
=item fixed
bug in Request.pm in handling good cached copies
find title and ctype only if there are form requests
wcr lib: Total: lines 5985, words 21202, chars 152648
2187 tests ()
=back
=head2 2004-02-06 (Base v3.00 build 9)
=over 2
=item added
Item.pm:from_file () - feed file data into from_string
=item fixed
wcr lib: Total: lines 5945, words 21056, chars 151573
2187 tests (from_file)
=back
=head2 2004-02-05 (Base v3.00 build 8)
=over 2
=item added
Item.pm:from_string () takes a default class name as second arg
Request.pm:auth ()
=item fixed
more work on request patterns, their request checks and errors
converted itempm.t to Test::More
wcr lib: Total: lines 5945, words 21056, chars 151573
2186 tests (Item, Pattern, Request)
=back
=head2 2004-02-04 (Base v3.00 build 7)
=over 2
=item added
msg/request.def - first draft of a request pattern definition file
lib/Dicop/Request/Pattern.pm - first draft of an object representing
valid request pattern
=item fixed
wcr lib: Total: lines 5966, words 21235, chars 152543
2175 tests (Pattern.pm)
=back
=head2 2004-02-01 (Base v3.00 build 6)
=over 2
=item added
daemon: unblock() - switch server to non-blocking mode
Handler: statussort(), status(), gentable()
=item fixed
init {last_error} to ''
added {error} and error() to Item.pm
wcr lib: Total: lines 5659, words 20182, chars 145021
2170 tests (Item.pm)
=back
=head2 2004-01-30 (Base v3.00 build 5)
=over 2
=item added
use POSIX, use base qw/Net::Server/ moved to lib/deamon
=item fixed
set $self->{self} from config field 'self' at init()
two instances of Dicop::decode => decode() in Handler.pm
finishrequest() called by handle_request() for specific stuff
better logic to call the handlers for the single requests
wcr lib: Total: lines 5559, words 19817, chars 142511
2168 tests (Handler.pm)
=back
=head2 2004-01-28 (Base v3.00 build 4)
=over 2
=item fixed
handle_requests calls request handler methods as method calls
taken over init of deny and allow security settings
from Data.pm into Handler.pm
wcr lib: Total: lines 5537, words 19793, chars 142334
2167 tests ()
=back
=head2 2004-01-23 (Base v3.00 build 3)
=over 2
=item added
added a custom accept() method that also works in non-blocking way
including switching to blocking
wcr lib: Total: lines 5493, words 19647, chars 141068
2167 tests ()
=back
=head2 2004-01-23 (Base v3.00 build 2)
=over 2
=item fixed
Handler.pm:don 't use Dicop::Server::Config nor Dicop::Files
wcr lib: Total: lines 5395, words 19282, chars 138399
2166 tests ()
=back
=head2 2004-01-22 (Base v3.00 build 1)
=over 2
=item added
first verson from Dicop 2.23
=item fixed
converted first testfiles to Test::More
moved generic Dicop code to Dicop::Base
wcr lib: Total: lines 5397, words 19286, chars 138444
2166 tests ()
=back
=head1 AUTHOR
(c) Bundesamt fuer Sicherheit in der Informationstechnik 1998-2004
DiCoP is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation.
See the file LICENSE or L<http://www.bsi.bund.de/> for more information.
=cut