/[mod_virgule]/trunk/ChangeLog
ViewVC logotype

Contents of /trunk/ChangeLog

Parent Directory Parent Directory | Revision Log Revision Log


Revision 147 - (show annotations)
Fri May 27 22:33:53 2011 UTC (3 years, 5 months ago) by rsr
File size: 109180 byte(s)
security fix: check for POST method
1 2011-05-27 R. Steve Rainwater <steve@ncc.com>
2
3 * acct_maint.c (acct_newsub_serve, acct_loginsub_serve):
4 * acct_maint.c (acct_flag_as_spam, acct_certify_serve):
5 * acct_maint.c ( acct_update_serve):
6 * article.c (article_submit_serve, article_reply_submit_serve):
7 * diary.c (diary_post_serve, diary_edit_serve):
8 * proj.c (proj_newsub_serve, proj_relsub_serve, proj_editsub_serve):
9 * rating.c (rating_rate_diary):
10 Added check for POST method. Otherwise, specially crafted GET requests
11 could trigger mod_virgule actions. Props to Daniel Kahn Gillmor for
12 spotting the need for this.
13
14 2011-05-26 R. Steven Rainwater <steve@ncc.com>
15
16 * mod_virgule: Various minor code cleanup and debug code removal
17 to prep for checking in to subversion.
18
19 2011-05-03 R. Steven Rainwater <steve@ncc.com>
20
21 * aggregator.c (extract_content): Skip feed items that exist in
22 markup but have no content.
23
24 2010-07-21 R. Steven Rainwater <steve@ncc.com>
25
26 * aggregator.c (aggregator_getfeeds_serve): Switched to using private
27 memory pool that can be completely freed after each iteration of the
28 aggregation loop.
29
30 * aggregator.c (extract_content): Added text/html to supported content
31 types.
32
33
34 2010-06-10 R. Steven Rainwater <steve@ncc.com>
35
36 * aggregator.c (aggregator_post_feed): Free content and title after
37 posting each item in feed to slow down memory consumption. This
38 applies to libxml2 functions that don't use the Apache APR memory
39 pool.
40
41
42 2010-02-10 R. Steven Rainwater <steve@ncc.com>
43
44 * util.c (virgule_normalize_html, virgule_normalize_html_tree):
45 Added baseurl argument to allow the content aggregator to pass the
46 base URL used for relative image anchor tags.
47
48 * aggregator.c (extract_content): Now passed the feed's base URL to
49 the HTML normalization procedures, so that images with relative
50 anchor tags can be converted to absolute URLs.
51
52 * util.c (virgule_normalize_html_node, virgule_nice_element):
53 Added recursive functions for normalizing HTML tree nodes and nicing
54 individual elements and properties. When nice_element updates the
55 properties, relative img src URLs are corrected to absolute using
56 the baseurl (when available). This should fix some of the bad images
57 that show up in syndicated blog posts.
58
59
60 2009-05-27 R. Steven Rainwater <steve@ncc.com>
61
62 * attc_maint.c (acct_maint): Fixed rare segfault that could occur
63 when computing stats on a user database that had zero users at one
64 of the certification levels.
65
66
67 2009-05-20 R. Steven Rainwater <steve@ncc.com>
68
69 * aggregator.c (extract_content): new function to extract content
70 from a syndicated feed item based on the explicitly specified or
71 guessed content type. This should allow to us properly parse feeds
72 containing unescaped XHTML tags inside of the feed's XML tags. Any
73 feed that does not explicitly specify the content type is assumed
74 to be either XML escaped HTML markup or a CDATA section contain
75 raw HTML.
76
77 * aggregator.c (aggregator_index_rdf_site_summary_10): Added support
78 for feeds that use the description tag rather than the more common
79 Dublin Core content tag.
80
81 * aggregator.c (aggregator_index_atom_10): Added parsing of the feed's
82 content type for use by the content extractor. So far types of 'html'
83 and 'xhtml' are supported.
84
85
86 2009-04-24 R. Steven Rainwater <steve@ncc.com>
87
88 * aggregator.h (struct _FeedItem): added strcontent, a pointer to
89 a fully parsed, stringified version of the feed item content.
90
91 * aggregator.c (aggregator_post_feed): extract feed content as a
92 string to simplify parsing on our end.
93
94
95 2009-02-13 R. Steven Rainwater <steve@ncc.com>
96
97 * util.c (nice_element): rewrote element property scanner to work
98 with the libxml2 parser.
99
100
101 2009-01-26 R. Steven Rainwater <steve@ncc.com>
102
103 * util.c (virgule_nice_htext, nice_tag, find_end_tag, match_tag):
104 Removed these functions, which have been replaced by the libxml2
105 HTML parser.
106
107 * util.c (virgule_normalize_html_tree): Broke out tree-specific
108 portion of HTML parser. If you need to normalize an existing XML
109 tree, use virgule_normalize_html_tree(). If you need to clean up
110 a text buffer of HTML-like tag soup, call virgule_normalize_html(),
111 which will turn it into a legal XML tree and pass it to, you guessed
112 it, virgule_normalize_html_tree().
113
114 * diary.c (virgule_diary_store_feed_item): Adapted to work with the
115 new libxml2 HTML parser.
116
117
118 2009-01-23 R. Steven Rainwater <steve@ncc.com>
119
120 * acct_maint.c (acct_person_serve): Renders appropriately based on
121 content type.
122
123 * acct_maint.c (acct_update_serve, acct_newsub_serve): updated to
124 work with libxml2 HTML parser and store with format type identifier.
125
126 2009-01-19 R. Steven Rainwater <steve@ncc.com>
127
128 * article.c, diary.c, proj.c, schema.c: lots of minor tweaks to
129 normalize the preview, editing and storage paths of content in these
130 modules. This should make HTML handling more consistent and hopefully
131 will allow us to someday combined the common code.
132
133 * proj.c (proj_newsub_serve, proj_proj_serve): updated to work with
134 libxml2 HTML parser and store with format type identifier.
135
136 * schema.c (virgule_schema_render_input, virgule_schema_put_field):
137 Textarea fields now receive additional processing to improve line
138 break handling. Removed redundant entity escaping on textarea fields.
139
140
141 2009-01-16 R. Steven Rainwater <steve@ncc.com>
142
143 * proj.c (proj_proj_serve, proj_reply_submit_serve):
144 * proj.c ( proj_reply_form_serve): Fixed broken HTML in forms.
145
146 * aggregator.c (aggregator_post_feed): Added support for parsing of
147 gzipped feeds.
148
149
150 2008-12-19 R. Steven Rainwater <steve@ncc.com>
151
152 * article.c (article_generic_submit_serve, article_edit_serve):
153 updated code to work with libxml2 HTML parser and fixed random
154 HTML markup bugs. All form textareas now use softwrap.
155
156 * diary.c (diary_edit_serve, diary_post_serve, diary_preview_serve):
157 updated code to work with libxml2 HTML parser and fixed random
158 HTML markup bugs. All form textareas now use softwrap.
159
160
161 2008-12-17 R. Steven Rainwater <steve@ncc.com>
162
163 * site.c (site_render): Removed experimental YouTube tag.
164
165 * util.c (virgule_youtube_link): Removed experimental YouTube tag.
166
167 * util.c (nice_person_link, nice_project_link): Updated to work
168 with the new libxml2 based HTML parser.
169
170 * wiki.c (virgule_wiki_link): Updated to work with new HTML parser.
171
172
173 2008-12-16 R. Steven Rainwater <steve@ncc.com>
174
175 * article.c (article_render_reply): Now passes content to
176 virgule_format_content() for appropriate formatting at render time.
177
178 * article.c (article_render_from_xml): Now passes lead and body to
179 virgule_format_content() for appropriate formatting at render time.
180 Also improved CSS support in HTML markup for articles. NOTE: All
181 this format tag stuff is strickly to maintain backward compatibilty
182 on Advogato and robots.net. Once the migration to the new HTML
183 parser is complete and the database at those sites are updated, I'll
184 pull this stuff out. It should be safe to go ahead and use the code
185 on new sites in the meantime. No functionality will be lost when
186 the format stuff is removed.
187
188
189 2008-11-25 R. Steven Rainwater <steve@ncc.com>
190
191 * article.c (article_generic_submit_serve): Added storage format type
192 field with a default of type 0.
193
194 * diary.c (virgule_diary_store_entry): Added storage format type
195 field with a default of type 0.
196
197 * diary.c (virgule_diary_store_feed_item): Added storage format type
198 field with a default of type 1.
199
200 * util.c (virgule_normalize_html): Added new function to normalize
201 any tag soup that even vaguely resembles HTML or XML. This is based
202 on libxml2 and replaces mod_virgule's older homebrew HTML parser.
203
204 * util.c (virgule_format_content): Added new function to call an
205 appropriate content formatting function based on type of content.
206
207
208 2008-09-27 R. Steven Rainwater <steve@ncc.com>
209
210 * site.c: Removed deprecated AdInfo struct
211
212 * site.c (site_render): Added experimental YouTube link. Place a
213 YouTube video ID inside like so: <youtube>d9gjy1OsTGQ</youtube>
214
215 * util.c (virgule_youtube_link): Genrates the YouTube link code
216 from the supplied video ID.
217
218 * style.c (virgule_render_header): Cleaned up some cruft
219
220 * INSTALL: Complete rewrite of the INSTALL file based on user feedback
221
222 2008-08-15 R. Steven Rainwater <steve@ncc.com>
223
224 * acct_maint.c (acct_person_diary_rss_serve): Fixed typo in RSS
225 version number (removed extra trailing dot).
226
227
228 2008-08-04 R. Steven Rainwater <steve@ncc.com>
229
230 * article.c (article_render_from_xml): replaced table-based article
231 header HTML with cleaner div markup.
232
233
234 2008-06-27 R. Steven Rainwater <steve@ncc.com>
235
236 * mod_virgule (set_virgule_db): db arg is now a const
237
238 * mod_virgule (read_site_config): fixed cases where a certain
239 config.xml setup could result in a strlen(NULL).
240
241 * Makefile: Cleaned up a and added comments about Apache ARP 1.x
242
243 * acct_maint.c: Added xmlChar/char casts to eliminate gcc 4.x warnings.
244 * diary.c: Added xmlChar/char casts to eliminate gcc 4.x warnings.
245 * db_ops.c: Added xmlChar/char casts to eliminate gcc 4.x warnings.
246 * db_xml.c: Added xmlChar/char casts to eliminate gcc 4.x warnings.
247 * tmetric.c: Added xmlChar/char casts to eliminate gcc 4.x warnings.
248 * schema.c: Added xmlChar/char casts to eliminate gcc 4.x warnings.
249 * site.c: Added xmlChar/char casts to eliminate gcc 4.x warnings.
250 * util.c: Added xmlChar/char casts to eliminate gcc 4.x warnings.
251
252
253 2008-01-23 R. Steven Rainwater <steve@ncc.com>
254
255 * diary.c (virgule_diary_entry_render): Added call to
256 virgule_nice_htext before rendering diary. This is a kluge to get
257 around the increasingly nasty HTML syndicated from external blogs.
258 This should be replaced with proper HTML filtering and repair in the
259 aggregator storage module (it will also be necessary to retroactively
260 repair stored blogs before removing this code).
261
262
263 2008-01-09 Mauro Persano <mauro_persano@yahoo.com>
264
265 * mod_virgule.c (read_allowed_tag): Added this function to parse
266 allowed tag structures in the config.xml file.
267
268 * mod_virgule.c (read_site_config): Modified to handle tag attribute
269 data from config.xml.
270
271 * util.c (virgule_add_allowed_tag): Modified to handle tag attribute
272 data from config.xml.
273
274 * util.c (nice_tag): Added this function to filter out disallowed
275 tag attributes in HTML.
276
277 * util.c (nice_htext): Added call to nice_tag()
278
279
280 2007-12-15 R. Steven Rainwater <steve@ncc.com>
281
282 * db.c (virgule_db_lock_key, virgule_db_lock_upgrade,
283 virgule_db_lock_downgrade, virgule_db_lock, virgule_db_unlock):
284 Removed all the existing lock functions and all references to them
285 throughout mod_virgule. Instead of locking the entire database,
286 these calls are replaced with Apache APR file locking calls to
287 lock only the specific DB Key (file) being read or written. This
288 makes mod_virgule much more responsive and a bit more scalable.
289
290 * db.c (virgule_db_del): Replaced unlink() with apr_file_remove().
291 Replaced rmdir() with apr_dir_remove().
292
293 * db.c (virgule_db_put_p): Added exclusive apr_lock_file() call.
294
295 * db.c (virgule_db_get_p): Added shared apr_lock_file() call.
296
297
298 2007-12-05 R. Steven Rainwater <steve@ncc.com>
299
300 * diary.c (virgule_diary_rss_export): The guid of syndicated diary
301 entries, when available, is preserved in Advogato's outbound diary
302 RSS feed. This should help downstream aggregators identify duplicate
303 posts more easily. Thanks to Paul Wise for noticing this.
304
305
306 2007-11-07 R. Steven Rainwater <steve@ncc.com>
307
308 * private.h: Added pointer to a Google Analytics string
309
310 * mod_virgule.c (read_site_config, info_page): Added support for a
311 Google Analytics code in the config.xml file
312
313 * style.c (virgule_render_footer_send): Added support for Google
314 Analytics. If a GA ID is found, the analytics tracking code is
315 inserted prior to the HTML body close tag.
316
317 * acct_maint.c (virgule_acct_update_art_index): Reduced memory
318 leakage substantially.
319
320
321 2007-11-04 Joe Presbrey <presbrey@mit.edu>
322
323 * acct_maint.c (prof_fields): Added field in profile for a FOAF URI
324
325 * foaf.c (virgule_foaf_person): Added xmlns:owl namespace to FOAF.
326 An owl:sameAs tag is now added for the FOAF URI, if present.
327
328
329 2007-11-02 R. Steven Rainwater <steve@ncc.com>
330
331 * config.xml: Fixed XML well-formedness error. Thanks to presbrey
332 for spotting this and the template issues.
333
334 * sample_db: Added several missing generic default templates needed
335 for a new install.
336
337
338 2007-10-22 R. Steven Rainwater <steve@ncc.com>
339
340 * foaf.c (virgule_foaf_person): Added export of the computed trust
341 level for each user with reference to a local RDF schema of Advogato
342 trust levels. This mechanism was suggested by Sean B. Palmer and
343 Dan Connolly on the W3C #swig IRC channel.
344
345
346 2007-08-31 R. Steven Rainwater <steve@ncc.com>
347
348 * foaf.c (virgule_foaf_person): The mbox_sha1sum field is not
349 included if the user profile has no email address. Thanks to
350 Andreas Harth of deri.org for reporting the bug.
351
352 * site.c (virgule_site_render_person_link): A rel="nofollow" is
353 added to any person link if the user is not trusted. This should
354 help minimize the value of untrusted accounts created by spammers.
355 Suggested by ncm.
356
357 * acct_maint.c (virgule_acct_person_index_serve): The user's cert
358 level is evaluated and rel="nofollow" added for untrusted users.
359
360 * site.c (site_render_recent_acct): The user's cert level is now
361 passed to virgule_site_render_person_link().
362
363 * diary.c (virgule_diary_entry_render): The user's cert level is now
364 passed to virgule_site_render_person_link().
365
366 * certs.c (virgule_render_cert_level_begin): The CertLevel value is
367 now returned. This prevents the need to do multiple trust metric
368 lookups in some cases.
369
370
371 2007-08-26 R. Steven Rainwater <steve@ncc.com>
372
373 * mod_virgule (info_page): Fixed pointer dereferencing bug.
374
375 * rating.c (rating_clean): Added a maintenance function that
376 analyzes the eigen vector cache and removes local cache files of
377 users that have been deleted. Ratings of nonexistant users found
378 in good cache files are also removed.
379
380
381 2007-08-14 R. Steven Rainwater <steve@ncc.com>
382
383 * acct_maintc. (acct_person_diary_static_serve): Handles a static
384 diary URL by rendering a single diary entry in fancy recentlog mode
385 with the addition of two links to additional diary entries for the
386 user.
387
388 * acct_maint.c (acct_person_serve): Added handlers for static diary
389 URLs.
390
391
392 * diary.c (virgule_diary_entry_render): Change diary entry permalinks
393 to static URLs. This may improve search engine rankings for diary
394 entries and will come in handy someday when we add comments to diaries.
395
396
397 2007-08-01 R. Steven Rainwater <steve@ncc.com>
398
399 * util.c (virgule_render_url): URL is now escaped with ap_escape_html()
400 rather than ap_os_escape_path(), which was freaking out on URLs that
401 contained a ? character. This should have been done as part of the
402 migration from the Apache APR 1.3 -> 2.0 API. Props to redi for
403 spotting this bug.
404
405
406 2007-07-29 R. Steven Rainwater <steve@ncc.com>
407
408 * acct_maint.c (acct_person_serve): Account profiles now include a
409 list of the 10 most recent articles posted by the user and link to
410 a full listing of articles.
411
412 * acct_maint.c (virgule_acct_update_art_index): Added this function
413 to create and maintain an XML index in the user account directory of
414 every article the user has posted.
415
416 * acct_maint.c (acct_person_articles_serve): Renders a full list of
417 all articles posted by the specified user.
418
419 * acct_maint.c (acct_kill): The articles.xml file is removed with a
420 user account is deleted.
421
422 * article.c (article_maint): Added this function to sequentially
423 process all articles and update user profiles with a correct index
424 of articles each user has posted.
425
426 * article.c (virgule_article_serve): Added URL for the new article
427 maintenance function.
428
429
430 2007-07-22 R. Steven Rainwater <steve@ncc.com>
431
432 * acct_maint.c (acct_person_serve): Inbound and outbound trust certs
433 less than 30 days old are marked as "new" in the user profile.
434
435
436 2007-07-19 R. Steven Rainwater <steve@ncc.com>
437
438 * foaf.c: Added xmlChar/char casts to eliminate gcc 4.x warnings.
439 * proj.c: Added xmlChar/char casts to eliminate gcc 4.x warnings.
440 * rss_export.c: Added xmlChar/char casts to eliminate gcc 4.x warnings.
441 * xmlrpc.c: Added xmlChar/char casts to eliminate gcc 4.x warnings.
442
443
444 2007-07-16 R. Steven Rainwater <steve@ncc.com>
445
446 * proj.c (proj_proj_serve):
447 * article.c (article_render_from_xml):
448 * acct_maint.c (acct_person_server): Apostrophe is now escaped in the
449 HTML calling the social bookmarking Javascript function. Thanks to
450 LKCL for spotting the error.
451
452
453 2007-07-09 R. Steven Rainwater <steve@ncc.com>
454
455 * aggregator.c (aggregator_post_feed): Check for existing GUID before
456 doing an update in case the feed has retro-actively altered the item's
457 post time stamp. This should prevent item dupes on feeds that mess
458 with the time stamps in bad ways, provided the GUID remains valid.
459
460 * article.c (article_render_from_xml): Replaced hardcoded social
461 bookmark links with standard share icon and call to external
462 javascript social bookmarking widget.
463
464 * acct_maint.c (acct_person_serve): Added social bookmark link to
465 profile page. Replaced "this person" to the actual user name in the
466 profile certification banner.
467
468 * proj.c (proj_proj_serve): Added social bookmark link to project
469 page. Tweak HTML slightly to improve look.
470
471
472 2007-07-06 R. Steven Rainwater <steve@ncc.com>
473
474 * acct_maint.c (acct_logout_serve): The no_cache and no_local_copy
475 flags are now set in the Apache request_rec structure to prevent
476 browsers from caching old logout results. This bug was preventing a
477 few users from successfully logging out of Advogato. Props to
478 Paul Wise (pabs3) for bringing the problem to my attention.
479
480
481 2007-06-13 R. Steven Rainwater <steve@ncc.com>
482
483 * v.js (clrField): Started a mod_virgule Javascript library.
484 The clrField() function allows helpful comments to be placed in
485 form fields that will vanish when the user focuses the field.
486
487 * style.c (virgule_render_header): Now includes the new Javascript
488 library in each page header. Removed the hardcoded frame-buster
489 Javascript from the page headers and put it in the v.js file,
490 allowing it to be cached across page views. This reduces the page
491 size slightly.
492
493 * util.c (virgule_strip_a): Fixed a bug that allowed spammers to
494 circumvent having anchor tags stripped from their notes field
495 by intentionally entering malformed markup.
496
497 * acct_maint.c (acct_index_serve): Cleaned up the account action
498 list.
499
500
501 2007-06-08 R. Steven Rainwater <steve@ncc.com>
502
503 * db_ops.c (db_relation_put_field): Fixed a bug that prevented staff
504 relations from being removed when set to a relation type of None.
505 Props to Gary Benson for noticing the problem.
506
507 * proj.c (virgule_proj_set_relation): Fixed bug that prevented
508 db_relation_put_field() from being called on certain staff
509 relationship changes.
510
511
512 2007-05-16 R. Steven Rainwater <steve@ncc.com>
513
514 * util.c (virgule_force_legal_css_name): Added function to force an
515 arbitrary string into compliance with the CSS1 spec for use as a CSS
516 class name. This will allow usernames to be inserted into class
517 statements as additional identifiers. Some third party blog handling
518 utilities rely on this arrangement to improve dupe handling.
519
520 * diary.c (virgule_diary_entry_render): Wrapped each entry in a div
521 and assigned two classes, one for site design and one that's a
522 CSS'ified version of the user name for screen-scraping aggregator
523 use. Also switched the diary entry body to a div from a blockquote
524 allowing more flexibility in site layout.
525
526
527 2007-05-15 R. Steven Rainwater <steve@ncc.com>
528
529 * private.h (virgule_private): added editors list pointer. This will
530 allow a site to optionally limit article posts to a specific set of
531 users, known as editors. Also changed article_post_by_seeds_only to
532 article_post_by_editors_only. The seed list was serving double duty
533 on robots.net as an editors list but it's now helpful to separate
534 the functions.
535
536 * mod_virgule.c (read_site_config): Added code to read the list of
537 editors from the config.xml file on startup.
538
539 * mod_virgule.c (info_page): The diagnostics page now dumps the
540 list of editors, if any, and the current setting of the editor only
541 flag read from the config.xml file.
542
543 * req.c (virgule_req_ok_to_post): Now queries the editors list
544 if the article_post_by_editors_only flag is set.
545
546 * article.c (article_form_serve): The article post page now uses
547 a page-specific template instead of the default template to allow
548 for more site-specific customization such as posting guidelines.
549
550
551 2007-05-03 R. Steven Rainwater <steve@ncc.com>
552
553 * general: Moved module templates to the new template directory.
554
555 * style.c (virgule_render_header): Removed references to vr->raw
556 flag which not needed with the streamlined header code.
557
558
559 * style.c (virgule_render_footer_send): Removed reference to vr->raw,
560 removed unneeded insertion of a </div> tag, Removed unneeded call
561 to virgule_render_sitemap().
562
563 * style.c (virgule_render_sitemap): Removed references to the
564 unneeded vr->sitemap_rendered flag.
565
566 * req.h (_VirguleReq): Removed unused raw and sitemap_rendered flags
567
568 * mod_virgule.c (virgule_handler): Removed unused reference to
569 vr->sitemap_rendered flag.
570
571
572 2007-05-03 R. Steven Rainwater <steve@ncc.com>
573
574 * proj.c (proj_new_serve, proj_edit_serve): Output is now rendered
575 within the default template.
576
577 * article.c (article_render_from_xml): Reddit submissions now
578 include the article title.
579
580 * article.c (article_form_serve): Output is now rendered within
581 the default template.
582
583 * article.c (article_generic_submit_serve): Output is now rendered
584 within the default template.
585
586 * article.c (article_reply_form_serve): Output is now render
587 within the default template.
588
589 * site.c (virgule_site_render_page): Removed code related to the
590 now unneeded distinction between standard and raw page headers.
591
592 * style.c (virgule_render_header): Removed this now unused function
593 along with a large block of hard-coded, site-specific header
594 markup for robots.net and Advogato. It's all in the templates now.
595
596 * style.c (virgule_render_header_raw): Renamed this function to
597 virgule_render_header().
598
599
600 2007-04-30 R. Steven Rainwater <steve@ncc.com>
601
602 * acct_maint.c (account_index_serve): Account info page and account
603 login page are now template based. 100% of the login page markup is
604 now configurable in the template.
605
606 * diary.c (diary_index_serve, diary_preview_serve): Output is now
607 rendered within a template.
608
609 * diary.c (diary_edit_serve): Output is now rendered in a template.
610 Fixed several bugs dating back to the first diary editing patch, one
611 of which could potentially have been the cause of Apache segfaults.
612
613
614 2007-04-29 R. Steven Rainwater <steve@ncc.com>
615
616 * site.c (site_render): Template tag replacement strings with NULL
617 values are now allowed.
618
619 * style.c (virgule_render_in_template): Templates are now rendered
620 even when no content is provided for them.
621
622
623 2007-04-25 R. Steven Rainwater <steve@ncc.com>
624
625 * aggregator.c (aggregator_post_feed): Items with no content are
626 skipped rather than creating empty diary posts.
627
628 * style.c (virgule_send_error_page): Error pages are now rendered
629 using the default.xml template. All hardcoded markup has been removed.
630 An additional argument was added to allow reuse of this function for
631 informational messages as well as error messages. Replaced old-style
632 <tt> tags with <em> tags. The old-style look can be duplicated in CSS
633 if desired.
634
635 * style.c (virgule_render_header_raw): Now produces legal HTML even
636 if title is NULL.
637
638 * site.c (virgule_site_render_page): Improved handling of the page
639 title to allow for static title text in the template, title text
640 provided by mod_virgule, and combinations of the two if desired.
641
642 * tmetric.c (tmetric_index_serve): Replaced hardcoded output page
643 with an info page generated by virgule_send_error_page().
644
645 * rating.c (rating_crank, rating_crank_all): Replaced hardcoded
646 output pages with info pages genrated by virgule_send_error_page().
647
648 * rating.c (rating_report): Replaced hardcoded output with a
649 template based output page. The default.xml template is used.
650
651 * aggregtator.c (aggregator_getfeeds_serve): Replaced hardcoded
652 output with a template based page. Default.xml template is used.
653
654
655 2007-04-17 R. Steven Rainwater <steve@ncc.com>
656
657 * aggregator.c (aggregator_index_atom_10): Fixed handling of ATOM
658 feed in which the entry containers have a <summary> tag but no
659 <content> tag. Also supported now are ATOM feeds which include
660 only an <updated> tag and not a <published> tag.
661
662
663 2007-04-09 R. Steven Rainwater <steve@ncc.com>
664
665 * MAKEFILE: Changed -fPIC to -fpic. This may have been the cause of
666 a couple of segfaults, due to a conflict with the flag used to compile
667 Apache and/or libxml2 on some distros. The -fpic flag should be
668 correct on 99% of the platforms likely to be running mod_virgule.
669
670 * acct_maint.c (virgule_acct_touch): Added missing db lock calls.
671
672 * rss_export.c (rss_index_serve, rss_render_from_xml): Changed a few
673 xmlNewChild calls to xmlNewTextChild to assure proper entity escapes.
674
675 * site.c (virgule_site_send_banner_ad, virgule_site_render_banner_ad):
676 Removed these functions. They have been rendered unnecessary by the
677 newer general purpose include tag which allows external banner ad
678 management tools to be used.
679
680 * mod_virgule (virgule_handler): Fixed minor aliasing bug. Removed
681 call to virgule_site_send_banner_ad.
682
683
684 2007-04-07 R. Steven Rainwater <steve@ncc.com>
685
686 * req.h: Added a temporary buffer for pre-rendering template data.
687 Also added a header buffer which allows additional page header
688 contents to be inserted easily. The old header buffer kluge that
689 passed strings through virgule_render_header() has been removed.
690
691 * mod_virgule (virgule_handler): Set the new buffer pointers
692 to NULL when initializing a request structure.
693
694 * style.c (virgule_set_temp_buffer, virgule_set_main_buffer): Added
695 functions to switch between the request buffer and the temp buffer
696 more easily. A temporary buffer is used when building pages that
697 will be rendered within a preloaded template. The main buffer is
698 used to render pages directly.
699
700 * style.c (virgule_render_in_template): Added a new function to handle
701 rendering an arbitrary page from a template. This collects some
702 duplicate code that was being used in several places and should
703 make things a little easier to maintain going forward.
704
705 * style.c (virgule_render_header_raw): If the header buffer is not
706 empty, its contents are inserted into the page header at this time.
707
708 * style.c (virgule_send_error_page): A page not found error string
709 is automatically added if the error code has been set to 404. This
710 eliminates the need for lots of duplicated static strings.
711
712 * acct_maint.c (acct_person_diary_serve): Replaced existing code
713 with the new template rendering functions.
714
715 * article.c (article_num_serve): Replaced existing code with the
716 new template rendering functions.
717
718 * buffer.c (virgule_buffer_size): Added function to return the
719 current size of a buffer.
720
721
722 2007-04-05 R. Steven Rainwater <steve@ncc.com>
723
724 * acct_maint.c (acct_person_diary_rss_serve): Added memory allocation
725 check on XML document dump process to prevent segfaults.
726
727 * acct_maint.c (acct_flag_as_spam): Removed early free since the
728 normal pool cleanup occurs immediately afterwards anyway.
729
730 * rss_export.c (rss_index_serve): Added an additional error check
731 to the xml rendering process to prevent allocation error segfaults.
732
733 * db_xml.c (db_xml_free): Additional sanity check before optional
734 xmlFreeDoc calls that occur outside of normal APR pool life cycle.
735 Also removed an unused parameter from the function call throughout
736 the mod_virgule code.
737
738 * foaf.c (virgule_foaf_person): Handles accounts with no givenname
739 or surname in a safer fashion.
740
741 * tmetric.c (tmetric_run): Removed unneeded check for NULL value
742 before call to db_xml_free().
743
744
745 2007-03-30 R. Steven Rainwater <steve@ncc.com>
746
747 * article.c (article_render_from_xml): Added some initial social
748 bookmarking support for Digg, del.icio.us, and Reddit.
749
750 * sample_db: Added PNG images for Digg, del.icio.us, and Reddit.
751
752
753 2007-03-21 R. Steven Rainwater <steve@ncc.com>
754
755 * mod_virgule.c (info_page): Added a lot of additional diagnostic
756 info from the Apache thread private record structure. Also moved all
757 the diagnostic info into a nicely formatted table that's a lot easier
758 to read.
759
760
761 2007-03-19 R. Steven Rainwater <steve@ncc.com>
762
763 * acct_maint.c (acct_person_diary_serve): Blog pages are now rendered
764 from a template (/site/person/diary.xml) instead of hard-coded HTML.
765 A sample diary.xml template was also added to the sample XML DB.
766
767
768 2007-03-15 R. Steven Rainwater <steve@ncc.com>
769
770 * diary.c (virgule_diary_[store|update]_feed_item): These functions
771 are now able to deal with feed formats that carry the blog content
772 as unescaped XML trees. At least one Blogger ATOM feed uses this
773 method.
774
775 * util.c (virgule_sha1): Return an SHA-1 hash as a string. Accepts
776 input strings of arbitrary length. Based on the Apache APR SHA-1
777 implementation.
778
779 * mod_virgule.c (info_page): Added admin email and FOAF SHA-1 test.
780
781 * foaf.c (virgule_foaf_person): Added support for foaf:mbox_sha1sum
782 field (an SHA-1 hash string of the user's email address).
783
784 2007-03-08 R. Steven Rainwater <steve@ncc.com>
785
786 * acct_maint.c (acct_newsub_serve): The password field is now a
787 required field on new accounts. The password is no longer allowed to
788 be the same as the username. The email field is now required. Also
789 removed some old debugging cruft from this function.
790
791
792 2007-03-07 R. Steven Rainwater <steve@ncc.com>
793
794 * acct_maint.c (acct_person_serve): Account profile "extra junk"
795 error was replaced with a conventional 404 error.
796
797 Requests for invalid account names now return a 404 error as well.
798
799 FOAF autodiscovery header and FOAF image link now show only for
800 trusted users.
801
802 RSS autodiscovery header and RSS link now show only for trusted users
803 who have at least one blog post.
804
805 * acct_maint.c (acct_person_foaf_serve): FOAF files are served only
806 for trusted users. FOAF requests for untrusted users now generate a
807 404 error.
808
809 * acct_maint.c (acct_person_diary_rss_serve): RSS feeds are now
810 served only for trusted users with at least one blog post. RSS
811 requests for untrusted users or trusted users who have no blog
812 posts now generate a 404 error.
813
814 * diary.c (virgule_diary_exists): Added this function to test if
815 there are any posts in a diary.
816
817
818 2007-03-05 R. Steven Rainwater <steve@ncc.com>
819
820 * article.c (article_submit_serve): Duplicate article rejection no
821 longer triggers on article edits of the most recently posted article.
822
823 * article.c (article_render_from_xml): Now displays the article
824 update timestamp for edited articles.
825
826
827 2007-02-24 R. Steven Rainwater <steve@ncc.com>
828
829 * mod_virgule.c (read_site_config): Added support for articledays2edit
830 config value. This will determine the number number of days after
831 posting that an article remains editable by the author.
832
833 * article.c (article_render_from_xml): Added edit link to article
834 subtitle if viewed by the author within edit period.
835
836
837 2007-02-23 R. Steven Rainwater <steve@ncc.com>
838
839 * article.c (virgule_article_serve): Added handler for edit function.
840
841 * article.c (article_edit_serve): Loads an existing article into the
842 editor. Only works for the original author and within a configurable
843 time period.
844
845 * article.c (article_generic_submit_serve): Added kludge to support
846 editing of existing articles, preservation of original article date,
847 and original article key value. This code is pretty nasty but no
848 worse than the rest of kludges piled on top of each other in here.
849 Functions like this one will be the first against the wall when the
850 revolution comes.
851
852
853 2007-02-21 R. Steven Rainwater <steve@ncc.com>
854
855 * acct_maint.c (acct_person_serve): Toned down the certification
856 form description a bit.
857
858
859 2007-02-17 R. Steven Rainwater <steve@ncc.com>
860
861 * site.c (site_render): Added userstats tag support.
862
863 * style.c (virgule_render_userstats): Added function to render the
864 new userstats.xml data as a simple table.
865
866
867 2007-02-16 R. Steven Rainwater <steve@ncc.com>
868
869 * certs.c (virgule_cert_verify_outbound): Added this function to
870 verify and repair outbound certs when called by acct_maint().
871 Checks are performed for a variety of cert errors that are known to
872 have occured on mod_virgule sites due to file corrupt. Corruption
873 that cannot be repaired is reported through a return value for
874 manual attention.
875
876 * certs.c (virgule_cert_verify_inbound): Added this function to
877 verify and repair inbound certs when called by acct_maint().
878
879
880 2007-02-12 R. Steven Rainwater <steve@ncc.com>
881
882 * acct_maint.c (acct_kill): Feedlist is only rewritten if a record
883 was removed for the deleted account. Blog feed buffer (feed.xml) is
884 removed during the account deletion process.
885
886 * acct_maint.c (acct_maint): Added new function to sequentially
887 check all user profiles for abnormalities. Unrecoverable problems
888 are reported for manual repair. Recoverable problems like asymmetric
889 certification are fixed automatically.
890
891
892 2007-02-09 R. Steven Rainwater <steve@ncc.com>
893
894 * style.c (virgule_render_header_raw): Removed the ancient CSS hack
895 used to for pre Netscape 4 browsers. The number of additional hits
896 generated by the hack is no longer worth it for backwards
897 compatibility with a browser that's not used anymore.
898
899
900 2007-02-08 R. Steven Rainwater <steve@ncc.com>
901
902 * style.c (virgule_render_date): Added seconds to the timestamp
903 rendering style used for RSS pubDate field. Props to
904 Wade Berrier <wberrier@novell.com> for noticing this bug.
905
906
907 2007-02-07 R. Steven Rainwater <steve@ncc.com>
908
909 * mod_virgule.c: Removed some cruft and several test functions that
910 have gone unused for years.
911
912 * mod_virgule.c (info_page): Removed reference to count(), a test
913 function which is no longer used. Cleaned up and correct HTML. Added
914 additional diagnostics output.
915
916
917 2007-02-04 R. Steven Rainwater <steve@ncc.com>
918
919 * site.c (site_render_recent_proj): Removed unneeded class from
920 recent project div wrappers. Assigning the class in the style sheet
921 is more flexible and results in smaller HTML.
922
923
924 2007-02-03 R. Steven Rainwater <steve@ncc.com>
925
926 * foaf.c (virgule_foaf_person): Changed foaf:seeAlso to the
927 correct rdfs:seeAlso. Oops. (thanks to Morten Frederiksen for
928 pointing out the bug).
929
930
931 2007-02-02 R. Steven Rainwater <steve@ncc.com>
932
933 * foaf.c (virgule_foaf_person): More FOAF changes (thanks go to
934 Richard Cyganiak, Benjamin Nowack, Andreas Harth and Danny Ayers).
935 Output should now work better with RDF applications like Tabulator
936 and Disco. Projects are now converted to document references
937 instead of foaf:Project records, which should be more consistent
938 with the latest interpretations of the FOAF 0.1 spec.
939
940 * acct_maint.c (acct_person_serve): Normalized and corrected the
941 HTML used to describe a user's projects on the profile page. Added
942 a FOAF badge and link.
943
944
945 2007-02-01 R. Steven Rainwater <steve@ncc.com>
946
947 * foaf.c (virgule_foaf_person): Refactored the code a bit to move all
948 the FOAF-specific code into its own file. This should make things
949 easier down the line if we add FOAF files for the projects. Added a
950 number of additional new properties to the FOAF output and made some
951 minor corrections to the syntax based on feedback from the foaf-dev
952 mailing list.
953
954 * acct_maint.c (acct_person_foaf_serve): This now just a wrapper for
955 for virgule_foaf_person that render the returned XML document.
956
957
958 2007-01-30 R. Steven Rainwater <steve@ncc.com>
959
960 * acct_maint.c (acct_person_foaf_serve): Added foaf:knows properties
961 for each outbound cert in a user's profile. Added foaf:Project
962 properties for each project associated with the user.
963
964
965 2007-01-29 R. Steven Rainwater <steve@ncc.com>
966
967 * rating.c (virgule_rating_serve): Changed the diary (blog) ranking
968 crank URL from /rating/crank.html to /admin/crank-diaryrating.html
969 to move it to a password protectable area where it can't be abused.
970
971 * aggregator.c (virgule_aggregator_serve): Changed aggregator crank
972 URL from /aggregator/getfeeds.html to /admin/crank-aggregator.html
973 to move it to a password protectable area where it can't be abused.
974
975
976 2007-01-28 R. Steven Rainwater <steve@ncc.com>
977
978 * acct_maint.c (acct_person_serve): Added FOAF auto-discovery URL
979 to the account profile page head section.
980
981 * acct_maint.c (acct_person_foaf_serve): Added name, nick, homepage,
982 and weblog tags to FOAF file.
983
984 * mod_virgule (info_page): renamed from test_page() and changed the
985 URL to /admin/info.html from /foo.html. This will allow the URL to be
986 added to a general password protected admin area of the site. The
987 info page exposes diagnostsic information that would be helpful to
988 script kiddies and crackers.
989
990 * mod_virgule (virgule_handler): Reordered dispatching sequence to
991 put administration and less used handlers last. Highly used handlers
992 such as RSS, articles, and diaries are now first. This should provide
993 a (very) small performance improvement.
994
995 * tmetric.c (virgule_tmetric_serve): Changed the trust metric crank
996 URL from /tmetric/ to /admin/crank-tmetric.html to move it to a
997 password protectable area where it can't be abused.
998
999
1000 2007-01-27 R. Steven Rainwater <steve@ncc.com>
1001
1002 * acct_maint.c (acct_person_serve): Added FOAF URL support.
1003 Deprecated diary.xml (virgule_diary_export) URL support.
1004
1005 * acct_maint.c (acct_person_foaf_serve): Generates a FOAF RDF file
1006 from a user profile.
1007
1008 * certs.c (virgule_cert_set): Certifications now include a date and
1009 time stamp. These will be used in the near future.
1010
1011 * diary.c (virgule_diary_export): Deprecated this function. It was
1012 superceded by the xml-rpc interface a long time ago, it generates
1013 invalid XML, it acts an effective denial of service attack vector,
1014 and is almost unused anyway.
1015
1016
1017 2007-01-19 R. Steven Rainwater <steve@ncc.com>
1018
1019 * acct_maint.c (acct_person_serve): Removed hard-coded RSS icons and
1020 related HTML. Replaced with div that can be configured in CSS.
1021
1022
1023 2007-01-17 R. Steven Rainwater <steve@ncc.com>
1024
1025 * rss_export.c (rss_render_from_xml): Added RSS 2.0 required tags,
1026 removed RSS 0.91 DTD reference, added several options tags such as
1027 guid and generator.
1028
1029 * rss_export.c (rss_index_serve): Minor tweaks to generate RSS 2.0
1030 feeds.
1031
1032 * acct_maint.c (acct_person_diary_rss_serve): Changed RSS version
1033 in XML header to 2.0.
1034
1035 * diary.c (virgule_diary_rss_export): Converted hard-coded time zone
1036 to use GMT instead. Added required RSS 2.0 tags and several optional
1037 one include guid and geneator. Title is now export correct if it is
1038 present in the diary entry. If a title is not available, the date is
1039 used as the title. If neither title nor date is available, the channel
1040 title is used for the item title.
1041
1042
1043 2007-01-14 R. Steven Rainwater <steve@ncc.com>
1044
1045 * util.c (virgule_iso_now): Time is returned in UTC (GMT) rather than
1046 server local time. By using UTC times consistently in the XML data
1047 store, it simplifies time calculations and becomes easier to render
1048 user-specific time zones and formats later on.
1049
1050 * util.c (virgule_time_t_to_iso): Time is returned as UTC (GMT) rather
1051 than server local time.
1052
1053 * util.c (virgule_virgule_to_time_t): Virgule timestamps are now
1054 assumed to always be in UTC (GMT) rather than server local time.
1055
1056 * diary.c (virgule_diary_latest_feed_entry): Diary timestamps are
1057 now assumed to be in UTC (GMT) rather than server local time.
1058
1059 * style.c (virgule_render_date): Time is now rendered as UTC rather
1060 than server local time zone.
1061
1062
1063 2007-01-06 R. Steven Rainwater <steve@ncc.com>
1064
1065 * aggregator.c (aggregator_post_feed): When an entry with new date
1066 is found, if the entry has a unique ID, a search done against the
1067 existing entries for a match. If a match is found, we assume the date
1068 is incorrect and perform an update on the existing entry rather than
1069 adding as a new entry. This should solve the problem of duplicate
1070 posts with certain RSS feeds that alter entry dates retroactively.
1071
1072 * diary.c (virgule_diary_entry_id_exists): Search diary entries for
1073 the specified entry ID and return the entry index number.
1074
1075 * diary.c (virgule_diary_update_feed_item): Added entry index number
1076 to parameter list. This optional value allows the entry to be
1077 accessed directly without a search, if it is known.
1078
1079 * diary.c (virgule_diary_latest_feed_entry): Extended search for a
1080 recent entry with a feedpost tag to 20 more recent entries. This
1081 should handle any reasonable case of combined local and syndicated
1082 usage.
1083
1084
1085 2007-01-05 R. Steven Rainwater <steve@ncc.com>
1086
1087 * diary.c (virgule_diary_store_entry): Completely rewrote this code
1088 to make the function safe to use on syndicated entries. All the
1089 syndication tags are now preserved when an updated entry is stored
1090 through the local website or through the xml-rpc interface.
1091
1092 * diary.c (diary_edit_serve): Added support for syndication-related
1093 fields, so we can warn users to be careful editing syndicated posts.
1094 Also added initial support for the title field.
1095
1096
1097 2007-01-04 R. Steven Rainwater <steve@ncc.com>
1098
1099 * site.c (virgule_site_render_person_link): Removed hardcoded anchor
1100 style. The external stylesheet can now be used to control appearance
1101 of the person links.
1102
1103
1104 2006-12-27 R. Steven Rainwater <steve@ncc.com>
1105
1106 * acct.c (acct_person_graph_serve): Added some sanity checks to the
1107 graph.dot code that should prevent it from segfaulting if it hits
1108 a malformed user account XML file.
1109
1110 * mod_virgule (test_page): Added display of vr->priv->base_uri and
1111 vr->priv->base_path to test page.
1112
1113 * mod_virgule (virgule_handler): Fixed minor bug in config.xml
1114 pathname (had extra slash - didn't seem to hurt anything).
1115
1116 * req.c (virgule_get_tmetric): Fixed bug that was causing trust
1117 metric cache to be loaded unnecessarily.
1118
1119
1120 2006-12-20 R. Steven Rainwater <steve@ncc.com>
1121
1122 * acct.c (virgule_acct_person_index_serve): Removed some hard-coded
1123 HTML that should be in the person index template.
1124
1125 * article.c: Cleaned up some HTML formatting cruft.
1126
1127 * diary.c (virgule_diary_store_feed_item): The item's unique
1128 identifier is now stored if it's available.
1129
1130 * tmetric.c (tmetric_test_serve): Removed this unused DB lock test.
1131
1132
1133 2006-12-13 R. Steven Rainwater <steve@ncc.com>
1134
1135 * aggregator.c (aggregator_index_atom_10): Added support for using
1136 the required atom:entry element, atom:id as a unique item identifier
1137 string.
1138
1139 * aggregator.c (aggregator_index_rdf_site_summary_10): Added support
1140 for using the required item attribute, rdf:about, as a unique item
1141 identifier string.
1142
1143 * aggregator.c (aggregator_index_rss_20): Unlike Atom or RDF Site
1144 Summary, RSS has no required unqiue identifier for items. So, we
1145 first try to use the optional guid element. If that's not present, we
1146 try to use the link element, which should be unique. If neither is
1147 present, we make a final attempt to use the title element which
1148 might be unique (but possibly not stable). RSS sucks.
1149
1150
1151 2006-12-06 R. Steven Rainwater <steve@ncc.com>
1152
1153 * acct.c (acct_index_serve): Corrected minor HTML glitch on login
1154 form.
1155
1156
1157 2006-12-06 R. Steven Rainwater <steve@ncc.com>
1158
1159 * diary.c (virgule_diary_store_feed_item): Improved error checking
1160 on entryposttime tag when storing feed item in blog.
1161
1162
1163 2006-12-03 R. Steven Rainwater <steve@ncc.com>
1164
1165 * aggregator.c (aggregator_identify_feed_type): Added a check for
1166 Atom version 0.3 feeds.
1167
1168 * aggregator.c (aggregator_normalize_feed): Added case for Atom
1169 version 0.3 feeds.
1170
1171 * aggregator.c (aggregator_index_atom_10): Added support for the Atom
1172 version 0.3 tags issued and modified, which are used in place of the
1173 newer published and updated tags.
1174
1175 * aggregator.c (virgule_update_aggregator_list): Normalizes the feed
1176 URL to include http:// in case the user forgot it.
1177
1178 * db.c (virgule_db_lock_downgrade): New function. Downgrades a write
1179 lock to a shared read lock.
1180
1181 * aggregator.c (aggregator_post_feed): Made the global write lock
1182 usage more granular to improve site performance while the aggregator
1183 is running. The lock is now held only during the actual blog update
1184 and not during the feed retrieval and parsing process.
1185
1186 * rating.c (rating_crank_all): The rating loop now releases the XML
1187 file system lock, sleeps for 1 microsecond, and re-acquires the lock
1188 on each iteration. This increases the total time taken for the
1189 eigen vector update slightly but it allows normal use of the site to
1190 continue during the calculation, eliminating the several minute wait
1191 at the top of each hour.
1192
1193
1194
1195 2006-12-02 R. Steven Rainwater <steve@ncc.com>
1196
1197 * util.c (virgule_rfc822_to_time_t): Added check for the quasi-RFC822
1198 date format generated by pyBlosxom blogs.
1199
1200
1201 2006-11-30 R. Steven Rainwater <steve@ncc.com>
1202
1203 * aggregator.c (aggregator_post_feed): Made the handlings of updates
1204 a little smarter so we don't bother trying to update an entry that
1205 was posted from the same instance of the feed.
1206
1207 * diary.c (virgule_diary_update_feed_item): Added check for NULL
1208 key for the target entry. When a feed is processed the first time,
1209 it's possible to find an update for an entry that we don't have yet.
1210
1211
1212 2006-11-29 R. Steven Rainwater <steve@ncc.com>
1213
1214 * aggregator.c (aggregator_post_feed): Now handles entries that have
1215 been updated by passing them to virgule_diary_update_feed_item().
1216 At present only Atom feeds seem to have support for updated entries.
1217
1218 * diary.c (virgule_diary_update_feed_item): Handles the replacement
1219 of a diary entry that has been updated or changed via a syndicated
1220 feed.
1221
1222 * diary.c (find_entry_by_feedposttime): Searches blog entries in
1223 reverse chronological order trying to find one that matches the
1224 specified feed post time.
1225
1226 * diary.c (virgule_diary_store_feed_item): Stores the update time
1227 of entries when available. At present, only Atom feeds seem to
1228 include an entry update time tag.
1229
1230 * diary.c (virgule_diary_entry_render): Diary update timestamp is
1231 added to syndication link when entry has been updated via a feed.
1232
1233 * util.c (virgule_virgule_to_time_t): Converts the timestamp string
1234 format used by mod_virgule into a proper time_t value, adjusting for
1235 the server's time zone. The older virgule_iso_to_time_t was broken.
1236 This code should replace the old code in all uses eventually.
1237
1238 * xml_util.c (virgule_xml_del_string_contents): New function that
1239 removes and frees all text and CDATA child nodes from an XML node
1240 while leaving other children untouched.
1241
1242
1243 2006-11-22 R. Steven Rainwater <steve@ncc.com>
1244
1245 * aggregator.c (aggregator_index_rss_20): Added support for <guid>
1246 tag as an alternate blog entry permalink when the <link> tag is
1247 missing.
1248
1249 * diary.c (virgule_diary_entry_render): Created a new function to
1250 render a diary entry and associated header. This combines a lot of
1251 redundant code from several functions in diary.c and site.c, making
1252 it easier to maintain. Diary/blog entries will now include the entry
1253 title if it exists. At present only syndicated entries have titles.
1254
1255 * diary.c (virgule_diary_latest_render): Removed this function. It
1256 has been entirely replaced by virgule_diary_entry_render().
1257
1258 * diary.c (virgule_diary_render): Removed duplicate diary rendering
1259 code from this function. It now relies on the new function,
1260 virgule_diary_entry_render().
1261
1262 * site.c (site_render_person_link): Added virgule_ prefix.
1263
1264 * site.c (site_render_recent_changelog): Removed duplicate diary
1265 rendering code from this function. It now relies on the new function,
1266 virgule_diary_entry_render().
1267
1268
1269 2006-11-20 R. Steven Rainwater <steve@ncc.com>
1270
1271 * aggregator.c: Added xmlChar/char casts to fix gcc 4.x warnings.
1272 * certs.c: Added xmlChar/char casts to fix gcc 4.x warnings.
1273
1274 * rss_export.c (rss_render_from_xml): pubDate is now added to RSS 0.91
1275 feed to make it easier to sort items. The description content is now
1276 properly escaped.
1277
1278
1279 2006-11-16 R. Steven Rainwater <steve@ncc.com>
1280
1281 * util.c (virgule_UTF8ToHtml): This is a local, static copy of the
1282 UTF8ToHTML function from libxml2. It has a couple of minor changes
1283 that allow it to handle ALL UTF-8 character correctly rather than
1284 only UTF-8 characters for which named entity values exist in HTML.
1285 Numeric entity values are used if a named entity is not available.
1286
1287 * util.c (virgule_nice_utf8): Now relies on our fixed version of the
1288 UTF8ToHTML code.
1289
1290 * util.c (virgule_nice_htext): Now calls virgule_nice_utf8 to make
1291 sure HTML is in the form of ASCII + entity values or numerical
1292 character values before processing. This should fix the bug with
1293 Chinese (and other) character sets not being saved and rendered
1294 correctly.
1295
1296
1297 2006-11-15 R. Steven Rainwater <steve@ncc.com>
1298
1299 * aggregator.c (aggregator_index_atom_10): Now handles missing link
1300 within items correctly.
1301
1302 * xml_util.c (virgule_xml_get_string_contents): Bug fix. Now handles
1303 CDATA sections correctly.
1304
1305 * acct.c (acct_kill): The aggregator feedlist is checked during
1306 account deletion and the user's feed is removed if it is present.
1307
1308 * aggregator.c (aggregator_index_rss_20): Now checks for the presence
1309 of a content:encoded tag and uses that in place of the description
1310 tag contents if found. Alternate formats that use dc:date in place
1311 of pubDate are also supported.
1312
1313
1314 2006-11-14 R. Steven Rainwater <steve@ncc.com>
1315
1316 * aggregator.c (aggregator_index_rdf_site_summary_10): RDF Site Summary
1317 parsing is now working. Only one variant using a combination of the
1318 Dublin Core module for dates and a draft version of the Content
1319 module for content encoding has been tested. Other variants are
1320 unlikely to work.
1321
1322
1323 2006-11-13 R. Steven Rainwater <steve@ncc.com>
1324
1325 * aggregator.c (aggregator_index_rss_20): RSS parsing is now working.
1326 Most versions should work but older versions will need the optional
1327 pubDate tag in order to be parsed correctly.
1328
1329 * acct.c (acct_newsub_serve): Increased recent account listings from
1330 50 to 100 for admin reasons. It's helpful to keep a month or so of
1331 listings since some spammers wait for while before doing anything
1332 interesting.
1333
1334 * util.c (virgule_time_t_to_iso): Converts a time_t value to an
1335 virgule-style ISO string. If no time_t value is given, the current
1336 time is rendered.
1337
1338 * util.c (virgule_rfc822_to_time_t): Converts an RFC-822 encoded
1339 time to a time_t value.
1340
1341
1342 2006-11-12 R. Steven Rainwater <steve@ncc.com>
1343
1344 * diary.c (virgule_diary_store_feed_item): Stores an item from a
1345 syndicated feed in a user's local blog. Several elements are added
1346 to the XML document that are not included when a local diary entry
1347 is made, such as the permalink to the original (remote) blog post.
1348
1349
1350 2006-11-11 R. Steven Rainwater <steve@ncc.com>
1351
1352 * aggregator.c (item_compare): A simple qsort function to compare
1353 the timestamps of blog items.
1354
1355 * mod_virgule.c (read_site_config): Added computation of the local
1356 server's time offset from UTC in seconds. We aren't using this yet
1357 but will need it in the near future.
1358
1359
1360 2006-11-10 R. Steven Rainwater <steve@ncc.com>
1361
1362 * aggregator.c (aggregator_normalize_feed): Takes whatever kind of
1363 feed you've got and returns a normalized structure with normalized
1364 timestamps, with items sorted by posting time.
1365
1366 * aggregator.c (aggregator_index_atom_10, aggregator_index_rss_20,
1367 aggregator_index_rdf_site_summary_10): Functions to normalize and
1368 index Atom, RSS, and RDF Site Summary feeds. At present we use a
1369 small subset of the tags in each, so it seems safe enough to use
1370 these for other versions of their kind (e.g. the rss_20 function
1371 should work fine on RSS 0.91 feeds, etc.)
1372
1373 * xml_util.c (virgule_xml_get_string_contents): Verifies that the
1374 passed xmlNode is non-NULL before using it. May have been the
1375 source of some segfaults.
1376
1377 * util.c (virgule_rfc3339_to_time_t): Converts an RFC-3339 encoded
1378 time to a time_t value.
1379
1380
1381 2006-11-09 R. Steven Rainwater <steve@ncc.com>
1382
1383 * diary.c (diary_edit_serve): Minor correction to error message
1384 text. Added missing quotes to attributes in HTML tags.
1385
1386 * proj.c (proj_proj_serve): Fixed bug that caused all the projects
1387 to vanish. A missing bracket on an if statement was causing all
1388 project pages to return a 404.
1389
1390 * db_ops.c (virgule_remove_recent): Fixed bug that limited removal
1391 of entries from recent files to the initial instance. Now all
1392 instances of an entry will be removed.
1393
1394
1395 2006-11-07 R. Steven Rainwater <steve@ncc.com>
1396
1397 * aggregator.c (aggregator_identify_feed_type): Attempts to identify
1398 the format of a blog feed by examining the XML file. Initially it
1399 works on most versions of Atom, RSS, and RDF Site Summary formats.
1400
1401
1402 2006-11-05 R. Steven Rainwater <steve@ncc.com>
1403
1404 * diary.c (virgule_diary_latest_feed_entry): Returns a Unix time_t
1405 value reflecting the timestamp of the most recent syndicated diary
1406 entry for the specified user.
1407
1408 * aggregator.c (aggregator_post_feed): Attempts to identify new blog
1409 posts in the user's feed buffer and appends them to the user's blog.
1410
1411
1412 2006-11-03 R. Steven Rainwater <steve@ncc.com>
1413
1414 * aggregator.c (virgule_aggregator_serve, aggregator_getfeeds_serve):
1415 When /aggregator/getfeeds.html is hit, the feedlist will be opened
1416 and each listed feed will be retrieved, buffered, and processed.
1417
1418
1419 2006-11-02 R. Steven Rainwater <steve@ncc.com>
1420
1421 * aggregator.c (virgule_update_aggregator_list): Created this function
1422 to check the specified user account and add them to or delete them
1423 from the aggregation list depending on their current account settings.
1424
1425
1426 2006-11-01 R. Steven Rainwater <steve@ncc.com>
1427
1428 * priv.h: Added a user blog syndication level that can be set from
1429 the config.xml file. This level will determine what certification
1430 is needed for a user to access the blog syndication feature.
1431
1432 * mod_virgule.c (read_site_config): Now reads the blogsyndicate
1433 feature access level.
1434
1435 * req.c (virgule_ok_to_syndicate_blog): New function that returns
1436 TRUE if the specified user is certified at a level high enough to
1437 use the blog syndication features. Result is based on the current
1438 setting specified in the config.xml file.
1439
1440 * acct_maint.c (account_index_serve, account_update_serve): Users
1441 can now edit and save blog aggregation info to profile.xml. Syndicate
1442 status is forced to OFF for users who are not certified at a level
1443 allowed to use syndication.
1444
1445
1446 2006-10-31 R. Steven Rainwater <steve@ncc.com>
1447
1448 * priv.h: Added pointer to tmetric data in the Apache thread private
1449 pool. This will allow us to load tmetric data only when it changes
1450 and preserve it between hits, instead of loading on each hit.
1451 A pointer to a memory sub pool and a time stamp for the tmetric
1452 cache was also added.
1453
1454 * mod_virgule.c (read_site_config): Make sure the thread private
1455 tmetric pointer is set to NULL when the Apache process initializes.
1456 The tmetric cache sub pool is destroyed prior to destruction of the
1457 main thread private pool when a config file reload occurs.
1458
1459 * req.c (virgule_req_get_tmetric): A stat is done on the tmetric
1460 cache and it's only reloaded if it has been updated since the last
1461 load. Otherwise, a pointer to the copy already loaded in the thread
1462 private memory pool is return. If a tmetric reload occurs, the
1463 tmetric sub pool is destroyed and a new sub pool allocated. This
1464 should prevent memory leaks on reload.
1465
1466 * tmetric.c (virgule_tmetric_get): The trust metric cache is now
1467 loaded using memory allocated from the tmetric sub pool.
1468
1469 * proj.c (proj_proj_serve): The "Project not found" page now returns
1470 a 404 instead of a 200. This should discourage repeated visits from
1471 search engines to dead project pages.
1472
1473 * util.c (virgule_nice_utf8): Added xmlChar casts to eliminate gcc 4.x
1474 warning. Replaced strlen with xmlStrlen.
1475
1476 * xml_util.c: Added xmlChar/char casts to eliminate gcc 4.x warnings.
1477
1478 * acct_maint.c (acct_person_serve): Added a "member since" field to
1479 the user profile page.
1480
1481
1482 2006-10-25 R. Steven Rainwater <steve@ncc.com>
1483
1484 * auth.c (virgule_auth_user_with_cookie): Added xmlChar/char casts
1485 to eliminate gcc 4.x warnings.
1486
1487 * article.c (article_generic_submit_serve): Added xmlChar/char casts
1488 to eliminate gcc 4.x warnings.
1489
1490
1491 2006-10-22 R. Steven Rainwater <steve@ncc.com>
1492
1493 * acct_maint.c: Fixed numerous xmlChar/char castings to fix gcc 4.x
1494 warnings. Switched a few strcmp() calls to xmlStrcmp() both to fix
1495 warnings and to make sure the string handling code is UTF-8 safe.
1496
1497
1498 2006-10-19 R. Steven Rainwater <steve@ncc.com>
1499
1500 * Makefile: Minor compatibility changes for gcc 4.x and Apache 2.2.
1501
1502 * mod_virgule (command_rec table): Updated to remove reliance on
1503 deprecated Apache 1.3 compatibility layer. Should compile cleanly
1504 with Apache 2.2 as well as 2.0 now.
1505
1506 * mod_virgule (read_site_config): Added several xmlChar casts of
1507 char to eliminate gcc 4.x warnings. Also replaced calls to strcmp
1508 with calls to xmlStrcmp.
1509
1510 * net_flow.c (virgule_net_flow_max_flow): #Ifdef'd out several
1511 debug g_print statements.
1512
1513 * eigen.c (virgule_eigen_crank): Added a few xmlChar and char
1514 casts to eliminate gcc 4.x warnings.
1515
1516 * acct_maint.c (acct_person_serve): When a "person not found" page
1517 is returned, the HTTP status code is set to 404 instead of 200. This
1518 should help search engines to stop requesting dead pages.
1519
1520 * acct_maint.c (acct_person_diary_serve): When diary entries for a
1521 non-existent person are requested, the HTTP status code is set to
1522 404 and a "person not found" error page is returned.
1523
1524 * tmetric.c (virgule_tmetric_get): Removed some debugging cruft.
1525
1526
1527 2006-10-16 R. Steven Rainwater <steve@ncc.com>
1528
1529 * acct_maint.c (acct_index_serve): Separated login and password
1530 reminder forms to improve usability.
1531
1532 * acct_maint.c (acct_person_serve): Spam reporting is now done through
1533 a form as per Scott Lamb's suggestion. Helps protect against accidental
1534 reports by automated agents following links. This also keeps us
1535 compliant with RFC 2616.
1536
1537
1538 2006-10-13 R. Steven Rainwater <steve@ncc.com>
1539
1540 * rating.c (rating_crank_all): Rewrote this function completely. It
1541 now uses the cached, pre-sorted tmetric list instead of looping
1542 through and reading every account's XML file. This shaved about 30%
1543 off the total processing time.
1544
1545
1546 2006-10-09 R. Steven Rainwater <steve@ncc.com>
1547
1548 * mod_virgule (read_site_config): Added config handler for new
1549 <accountspamthreshold> tag to set the spam score at which an
1550 untrusted observer account is automatically deleted.
1551
1552 * acct_maint.c (acct_flag_as_spam): Handles an account spam report.
1553 Writes a new spam flag to the reported account with the name of the
1554 flag issuer, and recalculates the spam score. If the score exceeds
1555 the currently configured threshold, the account is removed.
1556
1557 * acct_maint.c (virgule_acct_person_index_serve): User list paging
1558 now handles missing accounts smoothly (most likely missing because
1559 they got deleted by the new acct_kill function).
1560
1561 * eigen.c (virgule_eigen_cleanup): Remove any eigen data associated
1562 with the passed user account. Called as part of the account deletion
1563 process.
1564
1565 * db_ops.c (virgule_remove_recent): Remove items from a recent list
1566 that match a specified user account name. Called as part of the
1567 account deletion process.
1568
1569
1570 2006-10-08 R. Steven Rainwater <steve@ncc.com>
1571
1572 * acct_maint.c (acct_person_serve): Now displays the spam rating for
1573 observer accounts. A spam report link is displayed on observer
1574 accounts when viewed by trusted users.
1575
1576 * req.c (virgule_req_get_tmetric_level): Added additional sanity
1577 check to handle case where vr->u is null. This was causing a
1578 segfault when a non-trusted user performed certain (very rare)
1579 operations.
1580
1581
1582 2006-10-06 R. Steven Rainwater <steve@ncc.com>
1583
1584 * tmetric.c (tmetric_index_serve): Removed unneeded HTML dump of
1585 trust metric debug data during processing. This reduced trust
1586 metric computation time by more than 50%.
1587
1588
1589 2006-10-05 R. Steven Rainwater <steve@ncc.com>
1590
1591 * acct_maint.c (acct_index_serve): Corrected typo in UTF-8 content
1592 type specifier for account info form.
1593
1594 * acct_maint.c (acct_kill, acct_killsub_serve): Updated account
1595 removal code for live use. Account kill feature is now live and can
1596 be used by any of the users listed as special users in config.xml.
1597
1598 * article.c (article_render_from_xml): Added missing UTF-8 content
1599 type specifier in reply form.
1600
1601 * article.c (article_reply_submit_serve): Added code to (hopefully)
1602 reject duplicate replies.
1603
1604
1605 2006-10-04 R. Steven Rainwater <steve@ncc.com>
1606
1607 * util.c (virgule_user_is_special): Tests whether or not the currently
1608 logged in user, if any, is on the list of special (admin) users.
1609
1610 * article.c (article_render_from_xml): Replaced special user code
1611 with call to virgule_user_is_special().
1612
1613 * cert.c (virgule_render_cert_level_begin): Replaced special user
1614 code with all to virgule_user_is_special().
1615
1616
1617 2006-10-03 R. Steven Rainwater <steve@ncc.com>
1618
1619 * acct_maint.c (send_email): For added security the IP address
1620 requesting a password reminder is included in the reminder email.
1621
1622 * acct_maint.c (acct_person_serve): Observers now have a nofollow
1623 relation attribute added to the anchor tag for their homepage.
1624
1625 * util.c (virgule_add_nofollow): Adds nofollow relationship
1626 attributes to any anchor tags in the passed string.
1627
1628 * diary.c (virgule_diary_render, virgule_diary_latest_render):
1629 Nofollow is added to anchors in diary entries when rendered for an
1630 observer.
1631
1632
1633 2006-10-02 R. Steven Rainwater <steve@ncc.com>
1634
1635 * article.c (article_render_from_xml): Reply posting form is now
1636 concatenated to end of reply list as per Advogato style.
1637
1638 * util.c (virgule_nice_utf8): Added new function to clean up some
1639 UTF-8 to HTML entity conversions that were being missed.
1640
1641
1642 2006-10-01 R. Steven Rainwater <steve@ncc.com>
1643
1644 * mod_virgule.c (virgule_read_site_config): Added code support for
1645 <articletitlesize> tag in config.xml that can set the maximum length
1646 allowed for article titles.
1647
1648
1649 2006-09-29 R. Steven Rainwater <steve@ncc.com>
1650
1651 * proj.c: Now has even more horrible hacks scattered through it than
1652 before to render three "styles" of project pages: RAPH, NICK, and
1653 STEVE. The project style can be set in the config file, so provided
1654 you can use one of the three existing options, no code changes will be
1655 needed to customize mod_virgule for your use. RAPH style projects match
1656 the software projects of Advogato. STEVE style is identical except for
1657 one field name change that makes project more generic and matches the
1658 use on robots.net. NICK style converts the project area into a sort of
1659 makeshift discussion forum. This whole file is a disaster and needs to
1660 be re-written to use an external schema or replaced with a general
1661 purpose XML object handler.
1662
1663 * schema.c: Added virgule_ prefix to non-static functions.
1664 * site.c: Added virgule_ prefix to non-static functions.
1665 * style.c: Added virgule_ prefix to non-static functions.
1666 * tmetric.c: Added virgule_ prefix to non-static functions.
1667 * util.c: Added virgule_ prefix to non-static functions.
1668 * wiki.c: Added virgule_ prefix to non-static functions.
1669 * xml_util.c: Added virgule_ prefix to non-static functions.
1670 * xmlrpc.c: Added virgule_ prefix to non-static functions.
1671
1672
1673 2006-09-28 R. Steven Rainwater <steve@ncc.com>
1674
1675 * mod_virgule.c (virgule_read_site_config): Added code support for
1676 three settings to determine the features available at particular
1677 certification levels including <articlepost>, <articlereply>, and
1678 <projectcreate>.
1679
1680 * req.c (req_ok_to_post, req_ok_to_reply, req_ok_to_create_project):
1681 These functions now return TRUE or FALSE based on the cert levels
1682 set in the config.xml file.
1683
1684 * article.c (article_render_from_xml): Fix to account for special
1685 users in CSS setting of article headers (to match original Advogato
1686 functionality).
1687
1688 * style.c (render_sitemap): Anchor tags are supressed on the sitemap
1689 map link if the target URI matches the URI of the current page.
1690
1691 * req.c: Added virgule_ prefix to non-static functions.
1692 * rss_export.c: Added virgule_ prefix to non-static functions.
1693
1694
1695 2006-09-23 R. Steven Rainwater <steve@ncc.com>
1696
1697 * general: Replaced "weblog" with "blog". Robots.net used "weblog"
1698 and Advogato used "diary". After discussing with Raph, we decided
1699 "blog" was the most recognizable choice.
1700
1701 * hashtable.c: Added virgule_ prefix to non-static functions.
1702 * net_flow.c: Added virgule_ prefix to non-static functions.
1703 * proj.c: Added virgule_ prefix to non-static functions.
1704 * rating.c: Added virgule_ prefix to non-static functions.
1705
1706
1707 2006-09-21 R. Steven Rainwater <steve@ncc.com>
1708
1709 * mod_virgule.c (virgule_read_site_config): Added code support for
1710 <accountextendedcharset> tag in config.xml. When set to "on", this
1711 will allow new account name to use a slightly more premissive set of
1712 characters including -,_,., and spaces in their names. When set
1713 to "off" it uses the original mod_virgule/Advogato charset.
1714
1715 * acct_maint.c (virgule_validate_username): The allowed character
1716 set for new user names is determined by a config.xml setting.
1717
1718 * eigen.c: Added virgule_ prefix to non-static functions.
1719
1720
1721 2006-09-20 R. Steven Rainwater <steve@ncc.com>
1722
1723 * mod_virgule.c (set_virgule_db): Stats the provided path to verify
1724 that it exists and that it's a directory. Returns error message to
1725 Apache if path is invalid.
1726
1727 * mod_virgule.c (virgule_read_site_config): Added code support for
1728 <articletitlelinks> tag in config.xml. When set to "on", this will
1729 turn article titles into links to the article detail page. When set
1730 to "off" it uses the original mod_virgule/Advogato style of titles.
1731
1732 * article.c (article_render_from_xml): Article title link is now
1733 dependent on config.xml setting. Article header white space and
1734 width behavior is now set in CSS rather than hardcoded HTML.
1735
1736 * style.c (render_header): Isolated a nasty chunk of hardcoded
1737 HTML and created a generic version that will be used on all sites
1738 except robots.net. This is a particulary nasty hack and will be
1739 replaced by something cleaner later.
1740
1741 * diary.c: Added virgule_ prefix to non-static functions.
1742
1743 2006-09-18 R. Steven Rainwater <steve@ncc.com>
1744
1745 * db.c: Added virgule_ prefix to non-static functions.
1746 * db_obs.c: Added virgule_ prefix to non-static functions.
1747 * db_xml.c: Added virgule_ prefix to non-static functions.
1748
1749 2006-07-07 R. Steven Rainwater <steve@ncc.com>
1750
1751 * acct_maint.c: Added virgule_ prefix to non-static functions.
1752 * apache_util.c: Added virgule_ prefix to non-static functions.
1753 * article.c: Added virgule_ prefix to non-static functions.
1754 * auth.c: Added virgule_ prefix to non-static functions.
1755 * buffer.c: Added virgule_ prefix to non-static functions.
1756 * certs.c: Added virgule_ prefix to non-static functions.
1757
1758 2006-06-13 R. Steven Rainwater <steve@ncc.com>
1759
1760 * util.c (b64enc): Added static to function definition.
1761 * util.c (rand_cookie): Renamed virgule_rand_cookie.
1762 * util.c (add_topic): Renamed virgule_add_topic.
1763 * util.c (match_preifx): Renamed virgule_match_prefix.
1764 * diary.c (diary_serve): Renamed virgule_diary_serve.
1765 * mod_virgule.c (read_site_config): Renamed virgule_read_site_config.
1766 * proj.c (proj_serve): Renamed virgule_proj_serve.
1767 * rating.c (rating_serve): Renamed virgule_rating_serve.
1768 * rss_export.c (rss_serve): Renamed virgule_rss_serve.
1769
1770 2006-03-14 R. Steven Rainwater <steve@ncc.com>
1771
1772 * article.c (article_num_serve): Rewrote to use a user editable
1773 XML template populated by site_render_page() instead of a
1774 hard-coded page. All article non-form pages are now fully user
1775 configurable.
1776
1777 2006-02-23 R. Steven Rainwater <steve@ncc.com>
1778
1779 * article.c (article_num_serve): Removed some debugging cruft
1780
1781 * site.c (_RenderCtx): Added variables to hold a tag string and
1782 buffer string. This will allow site_render to populate rendered XML
1783 templates with contents rendered by other mod_virgule functions.
1784
1785 * site.c (site_render_page): Added tag and buffer string args that
1786 are passed to site_render via the ctx variable. This function can
1787 now be called directly from anywhere in mod_virgule to render a
1788 template and optionally populate it with locally rendered content.
1789
1790 2006-02-17 R. Steven Rainwater <steve@ncc.com>
1791
1792 * mod_virgule.c (register_hooks): Renamed to virgule_register_hooks
1793 to comply with Apache module definition standards.
1794
1795 * mod_virgule.c (create_virgule_dir_conf): Renamed to
1796 virgule_create_dir_config to comply with Apache module definition
1797 standards.
1798
1799 * mod_virgule.c (read_site_config): Added additional memory allocation
1800 safety checks.
1801
1802 * acct_maint.c (acct_person_serve): Added last login date to the info
1803 displayed on the account page.
1804
1805 * db_ops.c (add_recent, db_relation_put_field): Added additional null
1806 pointer checks.
1807
1808 2005-08-29 R. Steven Rainwater <steve@ncc.com>
1809
1810 * site.c (site_render, site_render_cronbox, site_render_recent_bots):
1811 Removed the cronbox and recentbot tags and associated render
1812 functions as both of these have been replaced by the more general
1813 include tag.
1814
1815 2005-08-26 R. Steven Rainwater <steve@ncc.com>
1816
1817 * mod_virgule.c (read_site_config): Added code to read a new
1818 user configurable admin email address tag, adminemail, from the
1819 site config.xml
1820
1821 * acct_maint (send_email): Replace hard-coded From: address on
1822 password reminder email with the configurable admin address.
1823
1824 * article.c (article_render_recent): Replace hard-coded story
1825 suggestion email address with the configurable admin address.
1826
1827 2005-08-25 R. Steven Rainwater <steve@ncc.com>
1828
1829 * mod_virgule.c (test_page, read_site_config): Added support for
1830 user configurable section of config.xml for article topics.
1831
1832 * private.h: Added use_article_topics variable. Added topic array
1833 header. Added topics to point to the list of Topic structs.
1834
1835 * req.h: Removed old topic array header
1836
1837 * util.c (add_topic): New function to add topics as they are
1838 read from the config file.
1839
1840 * article.c (lots-o-functions): Replaced #ifdefs and hard-coded
1841 support for topics with support for user-configurable topic setting.
1842
1843 2005-08-19 R. Steven Rainwater <steve@ncc.com>
1844
1845 * site.c (site_render, site_render_page): Implemented the
1846 head_content tag. Head contents are now passed to the
1847 render_header() function where they are inserted into the
1848 rendered HTML.
1849
1850 2005-07-27 R. Steven Rainwater <steve@ncc.com>
1851
1852 * Makefile: Added --strip-debug to linker options to keep filesize
1853 reasonable. This is done already on some distros depending on how
1854 they build Apache. Explicitly adding the option just makes sure it
1855 gets done consistently on all builds.
1856
1857 2005-07-25 R. Steven Rainwater <steve@ncc.com>
1858
1859 * certs.c (render_cert_level_begin, render_cert_level_end): Removed
1860 unneed calls to render_table_open() and render_table_close().
1861
1862 * site.c (render_footer): Removed this redundant function. The
1863 function render_footer_send now does it all.
1864
1865 * site.c (site_render): Removed unneeded calls to render_table_open()
1866 and render_table_close().
1867
1868 * style.c (render_header_raw, render_footer): Removed unneeded STYLE
1869 ifdefs and related code used to render old-style <FONT> tags.
1870
1871 * style.c (render_table_open, render_table_close): Removed these
1872 unused functions.
1873
1874 * style.c (renders_sitemap): Removed unneeded STYLE ifdefs while
1875 retaining the enclosed flag for advogato compatiblity.
1876
1877 * general: Added a sample data/intermap.txt file to the sample_db
1878 directory so that wiki tags will work on new installs.
1879
1880 2005-07-22 R. Steven Rainwater <steve@ncc.com>
1881
1882 * diary.c (diary_rss_export): Fixed segfault that occured if an
1883 RSS XML file was built from an empty diary entry.
1884
1885 2005-07-20 R. Steven Rainwater <steve@ncc.com>
1886
1887 * Makefile: Added -fno-strict-aliasing flag to get around the
1888 type-punned pointer problem in eigen.c that prevents compilation
1889 by gcc 3.4.3.
1890
1891 2005-07-10 R. Steven Rainwater <steve@ncc.com>
1892
1893 * private.h: Created an include for mod_virgule thread private data
1894 structures. Moved some elements of the VirguleReq data structure
1895 found in req.h to a virgule_private data structure in this file.
1896
1897 * (general): Modified the site configuration handling to use a thread
1898 private data pool that persists across requests. The site config.xml
1899 file is now loaded into virgule_private once for each Apache thread
1900 instead of into req once for each request. If the config.xml file is
1901 updated, it will be reloaded as needed.
1902
1903 * mod_virgule.c (test_page): Now displays status of the new account
1904 creation setting of the configuration. The time stamp of the config
1905 file in use is also displayed.
1906
1907 2005-07-01 R. Steven Rainwater <steve@ncc.com>
1908
1909 * (general): Diaries are known as weblogs today by just about everyone
1910 and it seems to confuse users to refer to them as anything else. So
1911 I'm updating all textual references throughout the code from "diary"
1912 to "weblog". For now, I'm leaving "diary" in the underlying code and
1913 URL references but that should probably be modernized at some point.
1914
1915 2005-06-22 R. Steven Rainwater <steve@ncc.com>
1916
1917 * acct_maint.c (acct_person_serve): Fixed a very old HTML coding
1918 error - a missing close tag on the #cert fragment identifier.
1919
1920 2005-06-16 R. Steven Rainwater <steve@ncc.com>
1921
1922 * db.c (db_get_p): A segfault was caused if db_get_p was called with
1923 a NULL key. It now handles this condition gracefully by returning a
1924 NULL result. This was causing occasional segfaults for trustmetric
1925 computations on user profiles that had damaged or incorrect names.
1926
1927 * tmetric (tmetric_run): The main loop skips files which return a
1928 NULL db_key value. This is usually caused by a damaged or incorrect
1929 profile name. Previously, the NULL key value was passed to db_get_p()
1930 resulting in a segfault.
1931
1932 2005-06-12 R. Steven Rainwater <steve@ncc.com>
1933
1934 * (general): Ported mod_virgule to the Apache 2 module API. Changes
1935 to includes and code in all *.c files were required.
1936
1937 2005-02-27 R. Steven Rainwater <steve@ncc.com>
1938
1939 * acct_maint.c (acct_person_serve): Punched up the wording below the
1940 certify form to try to cut down on incorrect or inflated certs.
1941
1942 2005-01-29 R. Steven Rainwater <steve@ncc.com>
1943
1944 * site.c (site_render): Added check for a "start" argument on pages
1945 that use <articles> tag to allow paging of an external template.
1946
1947 * articles.c (article_older_serve): Removed. No longer needed now
1948 that article_recent_render() handles paging correctly. Also, note
1949 that the site/article/index.xml and site/article/older.xml template
1950 are essentially identical now for stock mod_virgule sites. The only
1951 difference is that index.xml starts with the most recent articles
1952 by default and older.xml starts one page back. This was done because
1953 the user may wish to customize the two page to be slightly different
1954 in some cases.
1955
1956 * style.c (dayofweek): Added a function that returns the day of week
1957 so that we can do full RFC 822 dates as needed by RSS 2.0.
1958
1959 * style.c (render_date): Added a third date format for full RFC 822
1960 date strings.
1961
1962 * rss_export.c (rss_serve, rss_render, rss_render_from_xml): Added
1963 RSS 2.0 support to the existing RSS 0.91 code. The URLs are:
1964
1965 RSS 0.91 - /rss/articles.xml
1966 RSS 2.0 - /rss/articles-2.0.xml
1967
1968 2004-10-22 R. Steven Rainwater <steve@ncc.com>
1969
1970 * site.c (site_render): Added a <userlist> tag that will place a
1971 pageable list of mod_virgule users on a page. Next/previous page
1972 navigation is automatically added and there is a max-per-page value
1973 that may be set in the tag to determine how many users are listed
1974 on each page.
1975
1976 * acct_maint.c (acct_person_index_serve): Complete rewrite of this
1977 function to make it much faster, allowing incremental display and
1978 paging. Instead of completely parsing the user accounts and sorting
1979 them in memory, the userlist is now read from the pre-sorted trust
1980 metric table and only those accounts on the currently displayed
1981 page are loaded and parsed.
1982
1983 * tmetric.c (node_info_compare): Added the user cert level to the
1984 comparison. Users are now sorted first by cert level, then by name.
1985
1986 2004-10-10 R. Steven Rainwater <steve@ncc.com>
1987
1988 * db.c (db_put_p): Reverted Gary's diskspace patch yet again. This
1989 time due to what appears to be a rarely encountered race condition
1990 that results in the complete loss of the file being written. Yikes!
1991
1992 2004-09-26 R. Steven Rainwater <steve@ncc.com>
1993
1994 * db.c (db_put_p): Added check for existence of record before rename
1995 to prevent errors on posting with Gary's disk space patch. The patch
1996 should now working as intended.
1997
1998 * post.c, post.h: Remove these two files which are not referenced in
1999 the makefile and appear to be unused cruft.
2000
2001 2004-09-17 R. Steven Rainwater <steve@ncc.com>
2002
2003 * article.c (article_index_serve): Removed this unnecessary function
2004 and replaced it with a default XML file that makes the page easily
2005 configurable by the user.
2006
2007 * site.c (site_render_include): Added a function that allows the user
2008 to include one XML file within another.
2009
2010 2004-08-19 R. Steven Rainwater <steve@ncc.com>
2011
2012 * db.c (db_put_p): Reverted Gary's disk space patch due to problems
2013 with posting.
2014
2015 2004-08-19 R. Steven Rainwater <steve@ncc.com>
2016
2017 * db.c (db_put_p): Added Gary Benson's patch to allow graceful
2018 failure in case disk space is exhausted.
2019
2020 * rec.h (_VirguleRec): Added nav_options, and pointer to a list of
2021 navigation options from which the sitemap can be constructed.
2022
2023 * util.c (add_nav_option): Added a utility function to create
2024 sitemap navigation option structures.
2025
2026 * mod_virgule.c (read_site_config): Added code to read the sitemap
2027 navigation options from the XML config file.
2028
2029 * style.c (render_sitemap): Sitemap dynamically renders menu from
2030 the navigation options specified in the XML config file rather than
2031 using hardcoded values.
2032
2033 * style.c (render_site_link): Removed this function. It is no longer
2034 needed now that relative paths for the sitemap options may be
2035 specified directly in the XML config file.
2036
2037 2004-07-09 R. Steven Rainwater <steve@ncc.com>
2038
2039 * tmetric.c (tmetric_set_name): Fixed segfault that occured if
2040 tmetric_find_node() was unable to find a user name.
2041
2042 * acct_maint.c (acct_update_serve, acct_person_serve,
2043 acct_certify_serve): Added Gary Benson's page refresh patches.
2044
2045 2004-06-23 R. Steven Rainwater <steve@ncc.com>
2046
2047 * acct_maint.c (acct_index_serve): Added missing vr->prefix to the
2048 "edit your existing projects" link, pointed out by Seth Cohn.
2049
2050 2004-04-18 R. Steven Rainwater <steve@ncc.com>
2051
2052 * (general): Merged changes from latest version of Raph's mod_virgule
2053 (which is still going by v1.41) including the new account creation
2054 switch, the XML-RPC check cookie method, recentlog permalinks, article
2055 permalinks, project permalinks, and recentlog edit links.
2056
2057 * acct_maint.c (acct_index_serve, acct_newsub_serve): Added "forgot
2058 password" checkbox and instructions to login form. Added forgotten
2059 password handler to newsub_serve.
2060
2061 * acct_maint.c (send_email): Added send email function to support the
2062 "forgot password" feature. This function and the other modifications
2063 related to the forgotten password feature are based on a patch by
2064 Steve Kemp <steve@steve.org.uk>. The send_email function has a
2065 hard-coded path to sendmail and a hard-coded "from:" value that will
2066 need to be changed to match the site owners email address. The -f
2067 flag is used on sendmail, so you'll want to make apache a trusted
2068 user to avoid authentication warnings in the emails.
2069
2070
2071 2003-11-14 R. Steven Rainwater <steve@ncc.com>
2072
2073 * acct_maint.c (acct_person_index_serve): Corrupt profile.xml files
2074 should now be silently skipped rather than segfaulting Apache.
2075
2076 2003-11-02 R. Steven Rainwater <steve@ncc.com>
2077
2078 * (general): Changed encoding type from ISO-8859-1 to UTF-8 throughout
2079 code. This may eliminate some case of browsers submitting forms in
2080 the wrong encoding.
2081
2082 * tmetric.c (tmetric_run): Added error checking to prevent attempted
2083 dereferencing of a null pointer that occured when reading a corrupt
2084 profile.xml file. Corrupt files are now silently skipped instead of
2085 causing Apache to segfault.
2086
2087 2003-10-19 R. Steven Rainwater <steve@ncc.com>
2088
2089 * rss_export.c (rss_index_serve): Applied James Henstridge's patch
2090 to add missing content type to the returned document.
2091
2092 * (general): Applied James Henstridge's patch that ads a link element
2093 for auto-discovery of the diary RSS feeds. This changes the number
2094 of arguments passed to render_header_raw() and render_header() in
2095 style.c and affect all calls to those functions throughout the code.
2096
2097 * style.c (render_header_raw): Added link element for favicon. It's
2098 hardcoded to be /images/favicon.ico. Probably should make it a
2099 configuration option later on.
2100
2101 * db_xml.c (db_xml_put): Added xmlIndentTreeOutput flag to make sure
2102 libxml2 was indenting and adding newlines to output. This is another
2103 compatibility behavior and can be removed in the future if newlines
2104 are added to the xml trees.
2105
2106 2003-10-04 R. Steven Rainwater <steve@ncc.com>
2107
2108 * acct_maint.c (acct_person_diary_???_serve): Replaced
2109 xmlDocDumpMemory() with xmlDocDumpFormatMemory() to provide
2110 newlines and indenting in output. This simulates the behavior of
2111 libxml with respect to whitespace. Ideally these calls should
2112 eventually be replaced with nodes that implement the desired
2113 newlines and indentation directly.
2114
2115 * db_xml.c (db_xml_out): Replaced xmlDocDumpMemory() with
2116 xmlDocDumpFormatMemory() to provide newlines and indenting in output.
2117
2118 * rss_export.c (rss_index_serve): Replaced xmlDocDumpMemory() with
2119 xmlDocDumpFormatMemory() to provide newlines and indenting in output.
2120
2121 * xmlrpc.c (xmlrpc_create_response): Replaced xmlDocDumpMemory() with
2122 xmlDocDumpFormatMemory() to provide newlines and indenting in output.
2123
2124 2003-10-03 R. Steven Rainwater <steve@ncc.com>
2125
2126 * db.c (db_is_dir): Removed superfluous strlen() call.
2127
2128 2003-10-01 R. Steven Rainwater <steve@ncc.com>
2129
2130 * mod_virgule.c (virgule_handler): Added xmlKeepBlanksDefault(0) to
2131 force libxml2 to supress blank nodes. This allows the existing
2132 mod_virgule XML code to function properly with libxml2 until it
2133 can be updated. This can be removed once all xml code is adjusted
2134 to handle blank nodes correctly.
2135
2136 * (general): Merged changes from latest version of Raph's mod_virgule
2137 (which is still going by v1.41) including James Henstridge's diary
2138 patches and coderman's XML-RPC patches.
2139
2140 * (general): Merged Martijn van Beers <martijn@eekeek.org> libxml2
2141 patch to bring mod_virgule up to the current XML library version.
2142
2143 * style.c (render_header_raw, render_footer): Removed code that added
2144 redundent copy of page title on every page.
2145
2146 2003-04-21 R. Steven Rainwater <steve@ncc.com>
2147
2148 * (general): Merged changes from official mod_virgule versions
2149 1.38 through 1.41
2150
2151 2002-09-14 R. Steven Rainwater <steve@ncc.com>
2152
2153 * style.c (render_sitemap): Added "About" to site menu. This is
2154 temporary until a configurable menu is available.
2155
2156 2002-04-29 R. Steven Rainwater <steve@ncc.com>
2157
2158 * (general): Merged changes from official mod_virgule version 1.36
2159 and 1.37.
2160
2161 2002-04-26 R. Steven Rainwater <steve@ncc.com>
2162
2163 * (general): Merged changes from official mod_virgule version 1.33,
2164 1.34, and 1.35.
2165
2166 2002-04-06 R. Steven Rainwater <steve@ncc.com>
2167
2168 * buffer.c/h (buffer_new, buffer_write, buffer_send_response):
2169 Modified functions to send ETags. Note that the calling semantics of
2170 buffer_send_response have changed. Also generates a Content-MD5 tag,
2171 since it costs nothing.
2172
2173 * certs.c/h (render_cert_level_text): Added new function to render
2174 the certification level as hidden text which shows up in text mode
2175 browsers but is hidden in graphic browsers.
2176
2177 * acct_maint.c (acct_login): respects new semantics of the
2178 modified buffer_send_response function.
2179
2180 * article.c (article_render_reply): Added call to the new
2181 render_cert_level_text functions.
2182
2183 * mod_virgule (virgule_init_handler): Added version number and an
2184 init_handler to pass it back to Apache.
2185
2186 * req.c (send_response): respects new semantics of the
2187 modified buffer_send_response function.
2188
2189 * sites.c (site_render_recent_acct, site_render_recent_changelog):
2190 Added calls to new render_cert_level_text function.
2191
2192 * xmlrpc.c/h, xmlrpc-methods.c/h: Brought all XML-RPC functions up
2193 to mod_virgule 1.31 level.
2194
2195 2002-03-26 R. Steven Rainwater <steve@ncc.com>
2196
2197 * article.c (article_form_serve, article_generic_submit_serve):
2198 Changed height of lead box to 6 rows from 4. Added link to a
2199 posting guidelines page.
2200
2201 2002-03-24 R. Steven Rainwater <steve@ncc.com>
2202
2203 * tmetric.c (tmetric_index_serve): Escapes space chars in username
2204 before writing the default cert file. This particular bug has been
2205 around a long time but only surfaces if there are two users with
2206 similar names such as "Joe" and "Joe Smith" in which case, the
2207 wrong cert if found.
2208 * req.c (req_get_tmetric_level): Escapes space chars in username.
2209
2210 2002-03-22 R. Steven Rainwater <steve@ncc.com>
2211
2212 * Merged all changes from Raph's mod_virgule through 2.27 except
2213 hardcoded directory exception (we already have configurable ones).
2214
2215 * xmlrpc-methods.c/h, xmlrpc.c/h: Added Gary Benson's XML-RPC API.
2216
2217 * auth.c/h (auth_user): Gary Benson's XML-RPC API. Moved bulk of
2218 auth_user() into new function auth_user_with_cookie().
2219
2220 * acct_maint.c (acct_loginsub_serve): Gary Benson's XML-RPC API.
2221 Moved bulk of acct_loginsub_serve() into new function acct_login().
2222
2223 * db.c (db_dir_max_in_level): Added Raph's fix for a bug that caused
2224 miscounting of numeric directories when the _00.._99 entries follow
2225 _a.._d in the readdir() order.
2226
2227 * diary.c/h (diary_post_serve): Gary Benson's XML-RPC API. Moved
2228 bulk of entry storage code into new function, diary_store_entry().
2229
2230 * mod_virgule.c (virgule_handler): Gary Benson's XML-RPC API. Added
2231 handler for xmlrpc stuff.
2232
2233 * tmetric.c (tmetric_index_serve): Added Raph's fix to reduced time
2234 spent holding global db lock when writing tmetric cache.
2235
2236 2002-03-18 R. Steven Rainwater <steve@ncc.com>
2237
2238 * acct_maint.c (acct_kill): Added acct_kill() functio to totally
2239 remove a user account. The removal procedure will remove all certs
2240 to and from the user, remove all diary entries, and remove all the
2241 user's project relations. Projects themselves are not removed (even
2242 if the user being removed created a project, it may be in use by
2243 others) so there is a possibility of orphaned projects. I haven't
2244 decided on the best way to deal with this but it's a small price
2245 to pay to finally be able to delete user accounts.
2246
2247 * cert.c (cert_set): Modified to actually remove certs if they are
2248 set to CERT_LEVEL_NONE instead of just rendering them invisible.
2249
2250 * db.c (db_del): Added db_del() function to remove database records
2251 by key (i.e., it deletes the associated files). This is the missing
2252 link that should allow us to eventually add functions that delete
2253 user accounts, certs, projects, etc. If removal of the key leaves
2254 the directory it was residing in empty, the directory is removed too.
2255
2256 * proj.c (proj_set_relation): Added proj_set_relation() function to
2257 allow procedural changes to a user's relation to a project. This was
2258 previously possible only through the web interface. This function
2259 also deletes the relation entirely if it is set to "None" rather than
2260 just hiding the stale data as the previous implementation.
2261
2262 * proj.c (proj_relsub_serve): Now calls the new proj_set_relation()
2263 function rather than directly calling db_relation_put().
2264
2265 2002-02-17 R. Steven Rainwater <steve@ncc.com>
2266
2267 * acct_maint.c (acct_person_diary_xml_serve): Added patch from Gary
2268 Benson to fix memory leak in XML code.
2269
2270 * rss_export.c (rss_index_serve): Added patch from Gary Benson to
2271 fix memory leak in XML code.
2272
2273 2002-02-04 R. Steven Rainwater <steve@ncc.com>
2274
2275 * rss_export.c (rss_index_serve): Adjust URL and increased number
2276 of exported articles to 15 from 10.
2277
2278 2002-02-01 R. Steven Rainwater <steve@ncc.com>
2279
2280 * article.c (article_submit_serve): Added code to authorize user and
2281 check for duplicate postings (due to user error or browser problems).
2282
2283 2001-08-11 R. Steven Rainwater <steve@ncc.com>
2284
2285 * style.c (render_header_raw): Added a hard-coded keyword meta tag
2286 for robots.net.
2287
2288 2001-07-18 R. Steven Rainwater <steve@ncc.com>
2289
2290 * site.c (site_render_banner_ad): Rewrote banner ad code to use the
2291 XML database. Banner ads are randomly selected from /ads/adlist.xml
2292 and page view counts are decremented with each viewing of the ad.
2293 When view count reaches zero, ads are removed from rotation.
2294
2295 * site.c (site_send_banner_ad): A wrapper for site_render_banner_ad
2296 that allows banner ad requests used as an SSI within an HTML page.
2297
2298 * mod_virgule.c (virgule_handler): Added code to handle requests
2299 for '/cgi-bin/ad' by calling site_send_banner_ad.
2300
2301 2001-06-15 R. Steven Rainwater <steve@ncc.com>
2302
2303 * acct_maint.c (acct_touch): New function. Touches a <lastlogin>
2304 tag in the profile that can be used by an external account reaper
2305 to remove unused/unwanted accounts. When I get around to adding
2306 an internal account reaper, it will also use this function.
2307
2308 * auth.c (auth_user): Added a call to acct_touch().
2309
2310 * article.c (article_form_serve): Removed redundant "Post a new
2311 article" text from Posting page.
2312
2313 2001-05-21 R. Steven Rainwater <steve@ncc.com>
2314
2315 * tmetric.c (tmetric_index_serve): Added changes from Raph's 1.22
2316 version of mod_virgule. Neale Pickett's fix was added to the tmetric
2317 cache for names preceding the "-".
2318
2319 2001-04-27 R. Steven Rainwater <steve@ncc.com>
2320
2321 * site.c (site_render): Added a tag to for the loginbox.
2322
2323 * site.c (site_render_loginbox): Added this function to display a
2324 login box for users who are not logged in or a welcome message for
2325 those who are.
2326
2327 2001-04-23 R. Steven Rainwater <steve@ncc.com>
2328
2329 * article.c (article_submit_serve): Added maxlength attributes to
2330 article submission form to enforce length limits on article titles.
2331
2332 * article.c (article_generic_submit_serve): Added maxlength attributes.
2333
2334 2001-04-12 R. Steven Rainwater <steve@ncc.com>
2335
2336 * article.c (article_recent_render): Added a link for users who can't
2337 post that allows them to email story suggestions
2338
2339 2001-04-11 R. Steven Rainwater <steve@ncc.com>
2340
2341 * style.c (render_header_raw): Added a line of javascript to prevent
2342 pages from being displayed inside other sites framesets - this can
2343 happen from bad HTML on other websites or intentionally to wrap
2344 banner ads around someone elses sites.
2345
2346 2001-04-06 R. Steven Rainwater <steve@ncc.com>
2347
2348 * mod_virgule.c (xlat_handler): Added a new handler to accept a
2349 list of directories in httpd.conf that will be passed through to
2350 Apache to be handled normally.
2351
2352 * mod_virgule.c (test_page): Added a dump of any VirgulePass values
2353
2354 * mod_virgule.c (set_virgule_pass): New function that stores the
2355 VirgulePass values in an array.
2356
2357 * mod_virgule.c (set_virgule_dir_conf): Added initializer for the
2358 new pass_dirs element.
2359
2360 * site.c (site_render_recent_bots): Added a function to display
2361 recently added robots on the robomenu from an xml file created by
2362 the Perl administration program.
2363
2364 * site.c (site_render): Added check for the <recentbots/> tag.
2365
2366 * style.c (render_sitemap): Added link to robomenu and changed the
2367 "person" menu to read "humans".
2368
2369 2001-04-03 R. Steven Rainwater <steve@ncc.com>
2370
2371 * auth.c (auth_user): Tweaked the Apache user name data to remove
2372 spaces. This appears to be perfectly legal as far as the common log
2373 format and Apache are concerned but webalizer gags on names with
2374 spaces for some reason.
2375
2376 2001-03-22 R. Steven Rainwater <steve@ncc.com>
2377
2378 * article.c (article_form_serve): Removed Post button. User is now
2379 required to use the Preview button before posting. Added more
2380 descriptive comments about the use of the posting form (hard-coded
2381 for robots.net).
2382
2383 * article.c (article_generic_submit_serve): Added more descriptive
2384 comments about the use of the article preview form (hard-coded for
2385 robots.net).
2386
2387 2001-03-16 R. Steven Rainwater <steve@ncc.com>
2388
2389 * article.c (article_render_topic): Added "alt" attributes to topic
2390 icons for HTML compliance.
2391
2392 * site.c (site_render): Fixed bug that was putting illegal </img>
2393 tags into the XML-generated HTML output. These tags were causing
2394 rendering problems on some older browsers. Also fixed a number of
2395 case-sensitivities that were screwing up XML->HTML parsing.
2396
2397 2001-03-15 R. Steven Rainwater <steve@ncc.com>
2398
2399 * article.c (article_render_from_xml): Article titles on lead stories
2400 are now links to the story.
2401
2402 * util.c (render_date): Added optional date render format which
2403 includes hours, minutes, and time zone information. A new arg was
2404 added to select the desired render format and render_date() calls
2405 throughout mod_virgule were modified to use the new calling style.
2406
2407 2001-03-09 R. Steven Rainwater <steve@ncc.com>
2408
2409 * rss_export.c (rss_render_from_xml): Added some code to strip HTML
2410 anchor tags from the exported story descriptions. Whiles these
2411 appear to be legal in RSS, they are annoying.
2412
2413 2001-03-07 R. Steven Rainwtaer <steve@ncc.com>
2414
2415 * mod_virgule.c (test_serve): #ifdef'd out this function since it
2416 seems to not be needed or useful.
2417
2418 * proj.c (various): Change hard-coded values used by Advogato into
2419 hard-code values for robots.net. These really need to be read from
2420 XML rather than hard-code...
2421
2422 * site.c (site_serve): If a request for a URI ending in .html cannot
2423 be filled by an XML document, an attempt is made to find a static
2424 HTML file before declining the request.
2425
2426 2001-03-02 R. Steven Rainwtaer <steve@ncc.com>
2427
2428 * acct_maint.c (acct_person_serve): Cert selector is not
2429 displayed for users when looking at their own page.
2430
2431 * article.c (all): Changed calls to ok_to_post() in cases where
2432 ok_to_reply() was more appropriate.
2433
2434 * article.c (article_form_serve): Changed maximum article title
2435 size from 50 to 40 characters.
2436
2437 * article.c (article_generic_submit_serve): Changed maximum article
2438 title size from 50 to 40 characters. Fixed bug that caused loss of
2439 article topic when previewed.
2440
2441 * auth.c (auth_user): Authenticated user name from cookie is set in
2442 the Apache request_rec->conn_rec->user field so it can be logged.
2443
2444 * proj.c (proj_newsub_serve,proj_editsub_serve): Now uses the
2445 ok_to_create_project() function instead of ok_to_post(). Reduced
2446 project name size from 30 to 25 characters.
2447
2448 * req.c/h (ok_to_post): User must have journeyer or higher cert to
2449 post an article.
2450
2451 * req.c/h (ok_to_relpy): New function. User must have apprentice or
2452 higher cert to post a reply to article.
2453
2454 * req.c/h (ok_to_create_project): New function. User must have
2455 apprentice or higher cert to create a project.
2456
2457 * rss.c (rss_index_serve, rss_render_from_xml): Replaced hard-coded
2458 references to Advogato with hard-coded references to robots.net.
2459
2460
2461 2001-03-01 R. Steven Rainwater <steve@ncc.com>
2462
2463 * acct_maint.c (acct_certify_serve): Users are now unable to
2464 issue meaningless self-certifications.
2465
2466 * site.c (site_render_banner_ad): Kluge to display some random
2467 hard-coded banner ads. This will be replaced by real code later.
2468
2469 2001-02-27 R. Steven Rainwater <steve@ncc.com>
2470
2471 * article.c (article_render_from_xml): Slight fixes to article
2472 header code to achieve a uniform header size and preven wrapping
2473 in the header.
2474
2475 2001-02-26 R. Steven Rainwater <steve@ncc.com>
2476
2477 * acct_maint.c (acct_index_serve): Removed hard-coded reference
2478 to Advogato.org from descriptive text on user account page.
2479
2480 * certs.c (render_cert_level_begin): Removed hard-coded reference
2481 to advogato. The code is uneeded as the admin user name and cert
2482 level may be set in the httpd.conf file.
2483
2484 2001-02-25 R. Steven Rainwater <steve@ncc.com>
2485
2486 * mod_virgule (set_virgule_css): Added this function to read the
2487 location of the mod_virgule style sheet from the Apache config file.
2488
2489 * mod_virgule (create_virgule_dir_conf, test_page, virgule_handler):
2490 Added code to support reading the location of the style sheet using
2491 set_virgule_css().
2492
2493 * req.h (_VirguleReq): Added pointer to CSS location
2494
2495 * site.c (site_render): Removed code that was inserting spurious
2496 newlines into HTML rendered from the XML files. This fixes many
2497 of the HTML table rendering problems with older Netscape versions.
2498
2499 * style.c (render_header_raw): Style sheet location loaded from
2500 Apache config rather than a static one is now inserted into raw
2501 pages.
2502
2503 2001-02-23 R. Steven Rainwater <steve@ncc.com>
2504
2505 * util.c, site.c: Merged mod_virgule 1.21 changes. Only additional
2506 functionality over my existing changes is the use of <project> as
2507 an alternate to <proj>.
2508
2509 2001-02-22 Raph Levien <raph@acm.org>
2510
2511 * db_ops.c (add_recent): Uses xmlNewTextChild rather than
2512 xmlNewChild, so escaping is now correct.
2513
2514 * util.c Added <proj> tag and renderer.
2515
2516 * style.c (render_acceptable_html): Added <proj> to list.
2517
2518 * site.c (site_render_recent_proj): Changed to use
2519 render_proj_name (which escapes the URL correctly) rather than
2520 hand-rolled HTML.
2521
2522 Thanks to R. Steven Rainwater and Matt McClanahan for patches.
2523
2524 2001-02-22 R. Steven Rainwater <steve@ncc.com>
2525
2526 * everything : Updated user name support to allow names with spaces,
2527 dashes, underscores, and dots. All relevant functions throughout
2528 mod_virgule were updated to work with the new name format.
2529
2530 2001-02-21 R. Steven Rainwater <steve@ncc.com>
2531
2532 * acct_maint.c (all): Modified all function using cert levels to
2533 work with the changes made in certs.c (see below).
2534
2535 * article.c (article_render_from_xml): Replaced spacer tags with
2536 legal HTML alternative. Assorted other HTML fixes. If STYLE is
2537 defined in style.h, the article title attributes are taken from the
2538 external CSS.
2539
2540 * article.c (article_render_from_xml): Rewrote code that renders
2541 article headers. A header table is generated that includes a cell
2542 for an icon representing the article topic. The styles for the
2543 topic and author cells are drawn from CSS. All these change take
2544 effect when STYLE is defined.
2545
2546 * article.c (article_form_serve): Added topic selector input to
2547 the article posting form.
2548
2549 * article.c (article_submit_serve): Added support for article topics.
2550
2551 * article.c (article_generic_submit_serve): Added support for article
2552 topics.
2553
2554 * article.h: added ArticleTopic struct.
2555
2556 * certs.c/h: Major changes to reconcile an off-by-one error between
2557 CERT_NONE (was 0) and the lowest cert level (was 1). The 0th cert
2558 level is now considered the default and used in place of both. This
2559 simplifies many of the functions, structures, and cert calculations.
2560 Replaced the hard-coded cert levels created for Advogato with user
2561 configurable ones that may be set in the httpd.conf file.
2562
2563 * mod_virgule (command_rec): Added new command records for
2564 VirguleCerts, VirguleAdmin, VirguleSeeds, and VirguleTopic. New
2565 Apache option handler functions were added for each of these.
2566
2567 * mod_virgule (test_page): Now renders seeds, cert levels and admin
2568 values that were read from httpd.conf.
2569
2570 * mod_virgule (create_virgule_dir_conf): Seed, cert, admin, and
2571 topic pointers are now initialized.
2572
2573 * mod_virgule (virgule_handler): Pointers to seed, cert, admin, and
2574 topic data is now passed to the VirguleReq struct.
2575
2576 * req.c (all): Various changes to work with new cert level code.
2577
2578 * req.h: Added pointers in _VirguleReq for cert_level array, seed
2579 array, topic array, and admin name.
2580
2581 * tmetric.c/.h: Various changes to remove hard coded seed values.
2582 No changes to trust metric calculation were made.
2583
2584 2001-02-20 R. Steven Rainwater <steve@ncc.com>
2585
2586 * certs.c (render_cert_level_[begin|end]): If STYLE is defined in
2587 style.h, the cert level style is taken from the external CSS rather
2588 than hard-coded.
2589
2590 * db_ops.c (db_relation_get): Added return value to suppress compiler
2591 warnings. Not sure why this function exists?
2592
2593 * main_page.c/.h: removed these unused files
2594
2595 * mod_virgule.c (virgule_handler): Removed unecessary reference to
2596 main_page.c function. Fixed prefix bug that affected the foo.html
2597 diagnostics page. Added explanatory comments to some functions.
2598 Removed assorted cruft that appeared to have been used by Raph only
2599 for initial testing.
2600
2601 * proj.c (proj_index_serv): qsort() is now used to alphabetize the
2602 project list. An assciated compare function, proj_index_sort() was
2603 added. Removed unused variables to eliminate compiler warnings.
2604
2605 * site.c (site_render_recent_acct): Replaced spacer tags with table
2606 tags for HTML compliance.
2607
2608 * site.c (site_render_recent_changelog): Replaced spacer tags with
2609 break tags for HTML compliance.
2610
2611 * site.c (site_render_recent_proj): Replaced spacer tags with table
2612 tags for HTML compliance.
2613
2614 * site.c (site_render): Removed some dead code. Added #ifdefs to
2615 exclude calls to render_table_[open|close] when CSS extensions are
2616 compiled in.
2617
2618 * style.c (render_sitemap): If STYLE is defined, sitemap attributes
2619 are taken from external CSS rather than hard-coded valueds.
2620
2621 * style.c (render_table_[open|close]): Enclosed in #ifdef to exclude
2622 these functions when CSS extensions are compiled in.
2623
2624 2001-02-20 R. Steven Rainwater <steve@ncc.com>
2625
2626 * style.c (render_header_raw): Added support for an external style
2627 sheet named /mod_virgule.css to make life easier when customizing
2628 a mod_virgule site.
2629
2630
2631 2001-01-24 Raph Levien <raph@acm.org>
2632
2633 * auth.c (auth_user): Fixes denial of service attack. Thanks
2634 to R. Steven Rainwater for the patch.
2635
2636 2000-11-07 Raph Levien <raph@acm.org>
2637
2638 * req.h:
2639 * req.c:
2640 * tmetric.h:
2641 * tmetric.c: Replaced tmetric.xml with plain-text file, which
2642 removed a major performance bottleneck.
2643
2644 2000-09-02 Raph Levien <raph@acm.org>
2645
2646 * diary.c: Provide separate creation and last update dates.
2647
2648 * wiki.c: Liberalize InterWiki lexing.
2649
2650 2000-08-24 Raph Levien <raph@acm.org>
2651
2652 * wiki.c (wiki_link): Fix embarassing bugs.
2653
2654 * style.c (render_acceptable_html): Add wiki and person tags.
2655
2656 2000-08-24 Raph Levien <raph@acm.org>
2657
2658 * util.h:
2659 * util.c (nice_htext): Added handlers for special tags (wiki
2660 and person). First arg is now a VirguleReq rather than a pool.
2661
2662 * acct_maint.c (acct_person_serve):
2663 * article.c (article_generic_submit_serve):
2664 * diary.c (diary_preview_serve, diary_post_serve):
2665 * proj.c (proj_relsub_serve): Changed first arg of nice_htext
2666 to vr.
2667
2668 * req.h: Added render_data table, used by wiki to store
2669 intermap.
2670
2671 * wiki.h:
2672 * wiki.c: Renders InterWiki links.
2673
2674 * Makefile: Added wiki.o.
2675
2676 Tue Jun 6 22:47:04 2000 Raph Levien <raph@acm.org>
2677
2678 * acct_maint.c: Fixed problem of logging into an account
2679 that is an alias. It now follows the alias link.
2680
2681 * proj.c (proj_proj_serve): Fixed escaping of project name in
2682 cases where it includes "+".
2683
2684 * util.c: Added escape_uri_arg() function that escapes query
2685 arguments correctly.
2686
2687 2000-04-13 Raph Levien <raph@gimp.org>
2688
2689 * util.c (nice_htext): Fixed a brown paper bag bug in which
2690 nice_htext would run off the end of the buffer.
2691
2692 * article.c (article_generic_submit_serve): Fixed a bug in which
2693 the nice_text version of the title was ignored.
2694
2695 * util.c: Added escape_noniso_char, which translates non-iso
2696 characters to reasonable replacements. Both nice_text and
2697 nice_htext use this now. This fixes a vulnerability where some
2698 browsers (notably Netscape) interpret a tag between 0x8B and 0x9B
2699 characters as an HTML tag, and at the same time takes care of the
2700 "dreaded question mark" problem when people post from Windows
2701 browsers.
2702
2703 Sat Apr 8 13:05:38 2000 Raph Levien <raph@acm.org>
2704
2705 * proj.c (proj_proj_serve): Properly escape project name in URI.
2706
2707 * article.c (article_reply_submit_serve): lead and body are now
2708 passed to this routine raw so that they don't accumulate <p> tags.
2709
2710 * util.c: Added "pre" tag to acceptable html.
2711
2712 * rss_export.c (rss_index_serve): Changed root element to
2713 lowercase "rss".
2714
2715 * article.c (article_generic_submit_serve): Check for empty body
2716 when submitting a reply.
2717
2718 * article.c (article_render_reply):
2719 * diary.c (diary_render): Added <a name=""> tags to individual
2720 replies and diary entries. Thanks to Kelly for the patch.
2721
2722 * diary.c: Fixed segfaulting when diary is empty.
2723
2724 Sat Mar 4 16:14:23 2000 Raph Levien <raph@acm.org>
2725
2726 * proj.c:
2727 * diary.c (diary_post_serve):
2728 * acct_maint.c (acct_newsub_serve): Increased add_recent to 50.
2729 This makes sense now that the xml tags in site.c actually pay
2730 attention to their arguments.
2731
2732 * diary.c (validate_key): Patch by R. Steven Rainwater to allow
2733 key of -1, which autoassigns a new post number. This makes it
2734 easier to use a client for posting diary entries.
2735
2736 2000-03-04 Laurent Gauthier <lolo@seul.org>
2737
2738 * site.c (site_render_recent_changelog): Implemented this function
2739 to render the <recentlog> tag.
2740
2741 * site.c (site_render): Added a new tag <recentlog>, that will
2742 display the most recent diary entries.
2743
2744 * diary.c (diary_latest_render): New function used to render the
2745 latest diary update for a given user.
2746
2747 * diary.h: Added prototype for diary_latest_render().
2748
2749 Thu Mar 2 17:18:30 2000 Raph Levien <raph@acm.org>
2750
2751 * diary.c (diary_serve): Fixed prefix bug.
2752
2753 * acct_maint.c (acct_person_serve): Fixed prefix bug.
2754
2755 * site.c: Made "recent" tags actually limit the number displayed.
2756
2757 Fri Feb 25 13:41:21 2000 Raph Levien <raph@acm.org>
2758
2759 * diary.c (diary_render): Fixed a little bug that got introduced
2760 with the diary editing code.
2761
2762 Fri Feb 25 12:56:14 2000 Raph Levien <raph@acm.org>
2763
2764 * acct_maint.c (acct_person_serve): Made an explicit "[Edit]" link
2765 for diary editing, rather than just making the date clickable.
2766 Made the personal information page automatically redirect through
2767 symlinks. Thus, if the account Foo exists and /person/foo/ is
2768 requested, it will redirect to /person/Foo/.
2769
2770 Wed Feb 23 23:28:12 2000 Phil Schwan <pschwan@linuxcare.com>
2771
2772 * diary.c: Added diary editing. In order to re-use code already
2773 present in diary_post_serve and diary_preview_serve, I made them
2774 get the diary's index from the form field "key". This key is run
2775 through validate_key() which does simple bounds checking and returns
2776 a key suitable for passing to db_xml_put. Keys are originally set
2777 in diary_index_serve (adding a new diary entry) and diary_edit_serve.
2778
2779 Wed Feb 23 15:52:20 2000 Raph Levien <raph@acm.org>
2780
2781 * acct_maint.c: When you create an account with uppercase
2782 characters, it now creates an "alias" account with the
2783 all-lowercase version of the name, pointing to the real account.
2784 Conversely, it checks the all-lc name on account creation. This
2785 blocks people from creating accounts colliding in name (all except
2786 for case) with existing accounts. This was a serious problem
2787 because ap_table_* is not case sensitive.
2788
2789 * tmetric.c: Changes to work with "alias" profiles.
2790
2791 Thu Feb 17 11:46:34 PST 2000 Manish Singh <yosh@gimp.org>
2792
2793 * Makefile: use glib-config and xml-config directly, to avoid
2794 gnome build time dependancy
2795
2796 * mod_virgule.c: moved gnome-xml #includes to the beginning, so we
2797 get xmlNode declared for diary.h
2798
2799 2000-01-17 Raph Levien <raph@gimp.org>
2800
2801 * diary.c (diary_export): Initial support for exporting diaries
2802 as XML files.
2803
2804 * diary.h: diary_export declaration.
2805
2806 * acct_maint.c (acct_person_diary_xml_serve): Added
2807 /person/<username>/diary.xml into namespace served.
2808
2809 Mon Jan 10 11:11:49 2000 Raph Levien <raph@acm.org>
2810
2811 * acct_maint.c: Support for "older entries" for diary.
2812
2813 * diary.h, diary.c: Implemented "older entries" link. Implemented a
2814 "Preview" button for diary posting.
2815
2816 * article.h, article.c: Implemented "older articles" link.
2817 Implemented a "Preview" button for article and reply posting.
2818
2819 * util.c: Added str_subst utility function, used for previews.
2820
2821 Wed Dec 15 14:51:51 1999 Raph Levien <raph@acm.org>
2822
2823 * apache_util.c (read_post_data): bytes_read == 0 is an error
2824 condition. It was looping infinitely on this.
2825
2826 Wed Dec 8 12:24:49 1999 Raph Levien <raph@acm.org>
2827
2828 * db_xml.c (db_xml_free): Fixed a really _dumb_ memory leak.
2829
2830 Fri Nov 26 16:02:35 1999 Raph Levien <raph@acm.org>
2831
2832 * acct_maint.c: Shows project relationships, also have graph
2833 display for playing with dot.
2834
2835 * article.c: Only display "Reply..." link twice if number of
2836 replies != 0.
2837
2838 * db_ops.c: Enforce uniqueness when putting new relations in the
2839 db.
2840
2841 * proj.c: Correct url escaping for project names. Also
2842 sanitychecking of new project names.
2843
2844 * tmetric.c: Added alan :)
2845
2846 1999-11-15 Raph Levien <raph@gimp.org>
2847
2848 * db_ops.c (db_relation_put_field): Naming changes.
2849
2850 * proj.c: Actually stores the "staff" relationship between project
2851 and person now.
2852
2853 Mon Nov 15 15:43:47 1999 Raph Levien <raph@acm.org>
2854
2855 * proj.c: Project page now works pretty well.
2856
2857 * schema.c: Another new thing is a schema system for automating
2858 some of the drudge work in having forms with lots of fields. This
2859 is used throughout proj.c, and should probably be retrofitted to a
2860 few other things.
2861
2862 * db_ops.c: I'm starting on support for relations in the database
2863 abstraction, which will be useful for multiway relations. For
2864 example, if person X works on project Y, it will (with one
2865 operation) store information in both /acct/X and /proj/Y.
2866
2867 * some other minor fixes too, like alphabetizing the /person/ list
2868 and so on.

webmaster@dprg.org
ViewVC Help
Powered by ViewVC 1.1.22