Skip to content

Historic: Sprint: IETF73SprintLegacyScriptsDocumentation

Robert Sparks edited this page Apr 26, 2023 · 1 revision

PageOutline(2)

Legacy Scripts Documentation

Legacy scripts in size order, starting from the smallest to the largest.

Legacy scripts marked with a leading dash ('-') have been completed, merged and released.

- update-web-pages-export-minutes (Done. Integration not needed)

(I believe its finished. arifumi)

This script takes items not yet exported from the minutes and saves telechat minutes to iesg.<telechat_date> (for example: http://www.ietf.org/iesg/iesg.2008-10-09)

The information is found from telechat_minutes table by searching all rows not having exported == 0, and getting id, telechat_data, and telechat_minute. After that it updates exported of those ids it processed to 1.

# Pseudo-code:
  SQL SELECT id,telechat_date,telechat_minute 
      FROM telechat_minutes
      WHERE exported=0;
  for each id:
    write the telechat_minutes to ietf-ftp/iesg/iesg.telechat_data file
    SQL UPDATE telechat_minutes SET exported=1 WHERE id=<id>

- update-web-pages-wgdescriptions (Done+Integrated. Needs cronjob.)

Done by arifumi/RjS

URL to be generated through cronjob:

http://www.ietf.org/ietf-ftp/1wg-charters.txt http://www.ietf.org/ietf-ftp/1wg-charters-by-acronym.txt

This script generates list of working group names, either in by acronym (if -byacronym option is given to script) order, or in the area name, working group name order. After it has generated the list of working groups, it calls update-web-pages-wginfo with the group acronym and with -description -id options to get the group description.

The output file is either ietf-ftp/ietf/1wg-charters.txt (http://www.ietf.org/ietf/1wg-charters.txt) or ietf-ftp/ietf/1wg-charters-by-acronym.txt (http://www.ietf.org/ietf/1wg-charters-by-acronym.txt) depeding whether the groups were printed in the acronym order or in name order.

To get the active working groups in the acronym order is quite simple, get all groups from groups_ietf which have group_type_id ## 1 and status_id 1 and then find a matching entry from acronym table so that group_acronym_id from the groups_ietf matches the acronym_id in the acronym table.

# Pseudo-code:
  SQL SELECT a.acronym
      FROM acronym a, group_ietf g
      WHERE g.group_acronym_id = a.acronym_id
        AND g.group_type_id = 1
        AND g.status_id = 1
      ORDER BY a.acronum;
  write acronym list out
  for each acronym:
    call update-web-pages-wginfo acronum -description -id and append
    its output to the final output

To get the active working groups in the area name, group name order is bit more complicated, becase you need to find the group name from the same acronym table but this time matching the acronym_id in the acronym table to the area_acronym_id in the area_group table, and in addition you need to match group_acronym_id if the area_group with the group_acronym_id in the group_table, and then you need to sort the result by sorting first the name field of the acronym table with matching area_acronym_id in the area_groups table (i.e. the area name), and secondly sort it with the name field in the acronym table matching the acronym_id of the group_acronym_id in the groups_ietf table.

It might be easier to just find the list of areas first and sort them by name, and then for each area find the group acronyms sorted by group name.

# Pseudo-code:
  SQL SELECT a.acronym
      FROM acronym a, acronym a2, group_ietf g, area_group c
      WHERE g.group_acronym_id = a.acronym_id
        AND g.group_type_id = 1
        AND g.status_id = 1
        AND g.group_acronym_id = c.group_acronym_id
        AND c.area_acronym_id = a2.acronym_id
      ORDER BY a2.name, a.name;
  write acronym list out
  for each acronym:
    call update-web-pages-wginfo acronum -description -id and append
    its output to the final output

- update-web-pages-wgwebmail/email-list (Done+integrated)

Legacy URL: http://www.ietf.org/WG-WEB-Mail.html and http://www.ietf.org/dyn/wg/email-list.html New URL: https://datatracker.ietf.org/list/wg/

(Done in sprint-ietf-73 svn revision 1227 & 1228 by Chris)

This is a list of current and past WG web-based mailing list archives.

# db code from script:
 select email_archive,acronym,name from groups_ietf, acronym
    where group_acronym_id=acronym_id
    and email_archive is not null and email_archive <> '' and
    (email_archive like 'www%' or email_archive like 'http%') and
    acronym <> '2000' and acronym <> '822ext' order by acronym

Note: Replaced cron-generated page with Django generated page "list/wg". The '2000' exception was not made in the replacement. The archive for that is a broken link so when we have database update logs, it can be removed. The '822ext' special case appears unnecessary as does the 'www%' pattern.

October 2009: A redirect has been installed, and the old script has been removed.

- update-web-pages-charters (Not Needed, as the pages will be (dynamically generated?))

This script generates the text and html charter texts. It calls the wginfo.pl GROUP_ACRONYM -charter -id -rfc (which is exactly same as update-web-pages-wginfo script) to do the actual charter text. The output is written to the ietf-ftp/ietf/GROUP_ACRONYM/GROUP_ACRONYM-charter.txt and ietf-ftp/ietf/GROUP_ACRONYM/GROUP_ACRONYM-charter.html.

This is always called with -all option so usage without -all option is not documented here.

First this searches all the active working groups:

# Pseudo-code
  SQL SELECT a.acronym
      FROM acronym a, groups_ietf g
      WHERE g.group_acronym_id = a.acronym_id
        AND a.acronym <> 'none'
        AND g.status_id = 1
        AND g.group_type_id = 1
        AND g.start_date > $start_date;

The $start_date is 1/1/1980 converted to the format to fit into current database engine. I assume that check is there to get only those working groups which has some start date (i.e. not empty or 0/0/0.

After that it has list of valid active working group acronyms. For each of those acronyms it does following code:

# Pseudo-code
  for each acronym:
    if ietf-ftp/ietf/acronym directory does not exists:
        mkdir ietf-ftp/ietf/acronym
    generate new temporary charter text by calling \
      'wginfo.pl acronym -charter -id -rfc
    if the generated temporary charter text is different \
      than previous one (ignoring Last Modified line in checking):
        archive old charter by renaming it to acronym.yyyy-mm-dd.h.txt
        copy the new temporary charter to ietf-ftp/ietf/acronym/acronym.txt
    generate new temporary html charter by calling wginfotohtml acronym
    if the generated temporary html charter is different \
      than previous one (ognoring Last Modified line in checking):
        archive old html charter by renaming it to acronym.yyyy-mm-dd.h.html
        copy the new temporary charter to ietf-ftp/ietf/acronym/acronym.html
  run wg_dir_html.pl

- update-web-pages-allid (Done+integrated, cronjob needed)

(RjS) Run by update-web-pages thus

update-web-pages:/a/ietf/scripts/update-web-pages-allid -mysql > \
  /a/www/ietf-ftp/internet-drafts/all_id.txt

This is exposed at http://www.ietf.org/internet-drafts/all_id.txt

It claims to also be available at https://datatracker.ietf.org/public/idindex.cgi, but that's been redirected in django to point to the draft search tool instead.

This tool pulls a list of not-RFCed (or some other states) drafts:

my @List = db_select_multiple("select id_document_tag from id_internal \
  where rfc_flag = 0 and cur_state not in (99,32,42)");

It then, for each track, lists drafts in grouped by various states.

A typical row looks like

draft-arkko-arp-iana-rules-01   2008-10-24      \
  In IESG processing - ID Tracker state <In Last Call>

The output is not html.

The replacement is in ietf/idindex/generate_all_id_txt.py.

October 2009: The code in 4084ecfeb08eaea165ab1dcf785c8628b6255efe should be ready for deployment; working on getting it done.

- update-web-pages-nomcom (Done+integrated+redirected)

Legacy URL: http://www4.ietf.org/nomcom/index.html

New URL: http://datatracker.ietf.org/ann/nomcom/

(done --adam)

This script generates content of the main Nomcom page: http://www.ietf.org/nomcom/index.html

First unique id of the current Nomcom chair is extracted:

select person_or_org_tag from chairs_history where chair_type_id=3 and present_chair=1

Then the name name and email address of the current Nomcom chair is extracted using get_name($c_person_or_org_tag) and get_email($c_person_or_org_tag)

Then information about all Nomcom chairs after 2003 is extracted (information for 2002-2003 and 2003-2004 is hardcoded):

select id,person_or_org_tag,start_year,end_year from chairs_history where chair_type_id=3 and start_year > 2003 order by id desc

Information about announcements made by each Nomcom is then displayed. Each blocks starts with the name and email of the Nomcom chair for a particular period (start_year/end_year).

Then it is followed by the list of annoncements (keyed by nomcom_chair_id):

select announcement_id,announced_date,subject from announcements where nomcom=1 and nomcom_chair_id=$nomcom_chair_id order by announced_date, announced_time

Announcement subject is presented, followed by the announcement date. The subject is a link https://datatracker.ietf.org/public/show_nomcom_message.cgi?id=$announcement_id.

- update-web-pages-pwg (page no longer needed - this will not be ported)

This script creates the page www/ietf/IESG/internal/PWG.html

The page shows a list of working group proposals under IESG review.

It first prints a page description, and a table of category assignment descriptions.

First it finds all categories

select id,pwg_status_val from pwg_cat order by id

The proposed working groups are printed per status category; for id between 10 and 20, that is Creation, for id between 20 and 30, it is Rechartering. (there are no other category ids than 11,12,13,21,22 and 23, I propose removing the id column and replacing it with a type column and a state column).

Per category, the following data is printed:

  • Area
  • Status date
  • Group acronym
  • Link to proposed charter (/IESG/EVALUATIONS/-charter.txt
  • Group name
  • Mailto link to Token name
  • Optional note

This data is fetched with these sql queries:

select group_acronym_id,note,token_name from group_internal \
  where pwg_cat_id = $id
select acronym from acronym where acronym_id = $group_acronym_id
select last_modified_date from groups_ietf \
  where group_acronym_id = $group_acronym_id
select name from acronym where acronym_id = $group_acronym_id
select person_or_org_tag from iesg_login \
  where first_name = '$token_name'

- update-web-pages-wgsummary (Done+integrated, redirect needed)

Old:

http://www.ietf.org/ietf/1wg-summary.txt

http://www.ietf.org/ietf/1wg-summary-by-acronym.txt

New:

http://datatracker.ietf.org/wg/summary-by-area.txt

http://datatracker.ietf.org/wg/summary-by-acronym.txt

(done in sprint 74 svn branch for chris revision 1382,1386)

This is a text summary list of WGs sorted either by area or acronym, including: WG title, WG acronym, WG area, WG chair(s), WG mail list, "To join" and "archive"

A few blobs of SQL are used to collect this information.

The dynamically generated replacements are accessed by: wginfo/summary-by-acronym.txt

wginfo/summary-by-area.txt

The replacement includes a view for each, a template for each and a new filter "dashify" used for the textual underline effect.

- (update-web-pages-abstracts.orig -- copy of update-web-pages-abstracts)

Same as update-web-pages-abstracts (see below), with the following exceptions:

The abstracts are not indented.

The abstracts are not 'sanitized' with the regular expressions at the end.

- update-web-pages-abstracts (Done+integrated. Cronscript needed)

Merged in from sprint/75/jelte to branch/2.00/ in release 2.29.

This script has been replaced by idindex/generate_id_abstracts_txt.py. It is not intended to be called dynamically, but should rather be run from as a cronjob to create static files (since there is quite a bit of database querying involved).

The output of the scripts that are replaced by this one is currently at http://www.ietf.org/id/1id-abstracts.txt and http://www.ietf.org/id/1id-index.txt.

Old version:

This script generates a list of abstracts of current internet drafts (optionally for a specific area) in txt format.

From script:

There are five ways to call this script:

./update-web-pages-abstracts -mysql -area <acronym>
./update-web-pages-abstracts -informix -area <acronym>
./update-web-pages-abstracts -mysql -idindex
./update-web-pages-abstracts -mysql -idindex -area <acronym>
./update-web-pages-abstracts -informix -idindex -area <acronym>

Any other way should fail with a usage output (which is incorrect regarding to the possible inputs)

In the code of this script, -mysql vs -informix is not used any more.

The output is printed to stdout, which the caller is supposed to redirect to the correct .txt file.

Script execution:

First of all the group area id is looked up in the database by acronym ($acronym has been db_quoted):

SQL statement:

select acronym_id from acronym where acronym = $area_acronym

First a header text is printed depending on whether or not idindex was specified.

Without -idindex:

              Current Internet-Drafts

     This summary sheet provides a short synopsis of each Internet-Draft
     available within the "internet-drafts" directory at the shadow
     sites directory.  These drafts are listed alphabetically by working
     group acronym and start date.

With -idindex:

              Current Internet-Drafts
    This summary sheet provides an index of each Internet-Draft.
    These drafts are listed alphabetically by Working Group acronym and
    initial post date.

Then the following SQL statement is called, if there was a specific area specified:

select group_acronym_idfrom area_group \
  where area_acronym_id = $area_acronym_id

And the author name is looked up:

select
    p.first_name,p.last_name from person_or_org_info p, id_authors i
where
    i.id_document_tag = $id_document_tag
    AND i.person_or_org_tag = p.person_or_org_tag
order
    by author_order

The results of these are used in the final SQL statement:

select
    a.name,a.acronym,i.id_document_name,i.id_document_tag,i.revision_date,
    i.filename,i.file_type,i.abstract,i.start_date,i.revision
from
    acronym a, internet_drafts i
where
    a.acronym_id = i.group_acronym_id
    AND i.status_id = 1
    AND filename not like 'rfc%'
    AND i.group_acronym_id IN
        ( list from previous sql call )
order by
    a.acronym,i.start_date

From the results, the following is printed:

name (area acronym)
"id_document_name", author_name, revision_date, <filename-revision.file_type>

    indented abstract

If -idindex was specified, the abstract is not printed.

The author_name is a comma-separated list of 'firstname lastname' from the earlier SQL query.

The abstract has the following regex filters applied first:

s/ *\r\n */\n/g;	# get rid of DOS line endings
s/ *\r */\n/g;	# get rid of MAC line endings
s/(\n *){3,}/\n\n/g;	# get rid of excessive vertical whitespace
s/\f[\n ]*[^\n]*\n//g; # get rid of page headers
# Get rid of 'key words' boilerplate and anything which follows it:
# (No way that is part of the abstract...)
s/(Conventions [Uu]sed in this [Dd]ocument|Requirements [Ll]anguage)?[\n ]*\
The key words "MUST", "MUST NOT",.*$//s; 
# wrap long lines without messing up formatting of Ok paragraphs:
while ($abstract =~ m/([^\n]{72,}?) +/) {
    $abstract =~ s/([^\n]{72,}?) +([^\n ]*)(\n|$)/$1\n$2 /g;
}
s/\n[ \t]*/\n    /g;	# indent 4 spaces
s/^[\n ]*/\n    /;	# ensure one leading '\n    '
s/[\n ]*$/\n/;	# ensure one trailing '\n'

- update-web-pages-meetingagenda (Done+integrated, redirect needed)

Legacy URL example: http://www.ietf.org/meetings/agenda_75.txt

New URL example: http://datatracker.ietf.org/meeting/75/agenda.txt

This one generates the meeting agenda and stores it in two places /a/www/ietf/meetings/agenda_MEETING_NUM.txt and /a/www/ietf/meetings/agenda/agenda_MEETING_NUM.txt. It only writes the agenda out if the agenda is updated, i.e. if val in the switches table is non zero where name = "agenda_updated". From that same place it also gets the updated_date and updated_time giving the last modification time of the agenda.

After that fetches the meeting number from the meetings table by looking max(meeting_num), and checks if the agenda already exists i.e. checks if the count(session_id) is zero in the wg_meeting_sessions table where MEETING_NUM = meeting_num; If the agenda does not exists, it exits and does not do anything.

The rest is not documented here, as there exists already django version doing the same thing, and that should be fixed to work similarly than this perl version.

- update-web-pages-soi (known as iesg-doc-status after transition) Done+integrated

This produced an IESG internal page listing documents by their status, identical to http://datatracker.ietf.org/idtracker/status/. Was retired in October 2009.

- update-web-pages-wginfo (Done, waiting for testing & merge, Adam and Ben)

Redirects:

This script is used by update-web-pages-wgdescriptions script to generate the actual working group info page. It has following options: -id (show the current internet drafts) -rfc (show the RFCs produced by the group) -gm (show the current goals and milestones) -charter (Generate a text charter for the WG (includes -descdription and -gm) -description (show the working group description). The update-web-pages-wgdescriptions only uses -id and -description so only those are documented here, but the wginfo.pl (identical copy if this) is also called with -charter -id -rfc, so added documentation of -charter and -rfc here too.

First it fetches the acronym_id, and name from the acronym table. Then it will print working group header and description (and then it prints the description second time just to make sure people read it (I guess that is bug)), and finally it prints out the id list.

For the working group header the script fetches following values:

From acronym table where acronym = WG_ACRONYM:

  • WG_ACRONYM_ID: acronym_id from acronym table

  • WG_NAME: name from acronym table

  • WG_ACRONYM: received as argument to script

From group_ietf table where group_acronym_id = WG_ACRONYM_ID:

  • LAST_MODIFIED_DATE: last_modified_date from group_ietf

  • STATUS_ID: status_id from group_ietf

  • GROUP_TYPE_ID: group_type_id from group_ietf

  • AREA_DIRECTOR_ID: area_director_id from group_ietf

  • EMAIL_ADDRESS: email_address from group_ietf

  • EMAIL_SUBSCRIBE: email_subscribe from group_ietf

  • EMAIL_KEYWORD: email_keyword from group_ietf

  • EMAIL_ARCHIVE: email_archive from group_ietf

From g_status table where STATUS_ID = status_id:

  • STATUS_VALUE: status_value from g_status

From g_type table where GROUP_TYPE_ID = group_type_id

  • GROUP_TYPE: group_type from g_type

if GROUP_TYPE matches "WG" then STATUS_VALUE is append with string " Working Group", if GROUP_TYPE matches "PWG" then STATUS_VALUE is appended with string " Proposed Working Group", otherwise the GROUP_TYPE is appended to STATUS_VALUE.

From g_chairs table where WG_ACRONYM_ID = group_acronym_id:

  • CHAIR_PERSON_OR_ORG_TAG: person_or_org_tag from g_chairs

From acronym and area_group tables where WG_ACRONYM_ID # area_group.group_acronym_id and where area_group.area_acronym_id acronym.acronym_id:

  • AREA_ACRONYM_ID: acronym_id from acronym

  • AREA_NAME: name from acronym

If it didn't get AREA_ACRONYM_ID from acronym and area_group tables previously it fetches them from acronym, area_directors and groups_ietf tables where WG_ACRONYM_ID # groups_ietf.group_acronym_id and groups_ietf.area_director_id area_directors.id and area_directors.area_acronym_id = acronym.acronym_id, i.e. fetch the area director of the group, and fetch area information by looking at the area directors area.

From area_directors table where AREA_ACRONYM_ID = area_acronym_id:

  • AD_PERSON_OR_ORG_TAG: person_or_org_tag from area_directors

From area_directors table where AREA_DIRECTOR_ID = id:

  • ADVISOR_PERSON_OR_ORG_TAG: person_or_org_tag from area_directors

From g_tech_advisors table where WG_ACRONYM_ID = group_acronym_id:

  • TECH_ADVISOR_PERSON_OR_ORG_TAG: person_or_org_tag from g_tech_advisors

From g_editors table where WG_ACRONYM_ID = group_acronym_id:

  • EDITOR_PERSON_OR_ORG_TAG: person_or_org_tag from g_editors

From g_secretaries table where WG_ACRONYM_ID = group_acronym_id:

  • SECRETARY_PERSON_OR_ORG_TAG: person_or_org_tag from g_secretaries

The working group header consist of following lines:

WG_NAME (WG_ACRONYM)
-------------------- (just as long as the previous line)

 Charter
 Last Modified: LAST_MODIFIED_DATE

  Current Status: STATUS_VALUE

  Chair(s):
    CHAIR_PERSON_OR_ORG_TAG <CHAIR_EMAIL_ADDRESS>
    CHAIR_PERSON_OR_ORG_TAG <CHAIR_EMAIL_ADDRESS>
    ...

  AREA_NAME Director(s)
    AD_PERSON_OR_ORG_TAG <AD_EMAIL_ADDRESS>
    AD_PERSON_OR_ORG_TAG <AD_EMAIL_ADDRESS>
    ...

  AREA_NAME Advisor:
    ADVISOR_PERSON_OR_ORG_TAG <ADVISOR_EMAIL_ADDRESS>

  Technical Advisor(s): (this section is only here if group has it)
    TECH_ADVISOR_PERSON_OR_ORG_TAG: <TECH_ADVISOR_EMAIL_ADDRESS>
    ...

  Editor(s): (this section is only here if group has it)
    EDITOR_PERSON_OR_ORG_TAG: <EDITOR_EMAIL_ADDRESS>
    ...

  Secretary(ies): (this section is only here if group has it)
    SECRETARY_PERSON_OR_ORG_TAG: <SECRETARY_EMAIL_ADDRESS>
    ...

  Mailing Lists:
      General Discussion: EMAIL_ADDRESS
      To Subscribe:       EMAIL_SUBSCRIBE
      In Body:            EMAIL_KEYWORD (only if EMAIL_KEYWORD exists)
      Archive:            EMAIL_ARCHIVE (only if EMAIL_ARCHIVE exists)

For the working group description the script simply opens /a/www/ietf/WG_DESCRIPTIONS/WG_ACRONYM.desc.txt, where the WG_ACRONYM is the groups acronym given to the script. This is printed out also if -charter option is given.

-charter option also enables printing milestones for the group. They are printed following format:

 Goals and Milestones
   Done               DESCRIPTION
   EXPECTED_DUE_DATE  DESCRIPTION
   ...

For the internet drafts lists the script gets id_document_name, filename, revision, start_date, and revision_date from internet_drafts table where the WG_ACRONYM_ID # group_acronym_id and status_id 1 and where filename <> "rfc%" ordered by the start_date.

For those it generates list of interdrafts having format:

 Internet-Drafts:

Posted Revised         I-D Title   <Filename>
------ ------- --------------------------------------------
DATE   DATE    <FILENAME-REVISION.TXT>
               ID_DOCUMENT_NAME
...
# Pseudo-code:
  SQL SELECT id_document_name,filename,revision,start_date,revision_date
      FROM internet_drafts
      WHERE group_acronym_id = $group_acronym_id
        AND status_id = 1
        AND filename <> 'rfc%'
      ORDER BY start_date;
  if no documents
    write " Internet-Drafts:\n\n  No Current Internet-Drafts."
  else
    write " Internet-Drafts:\n\
\n\
Posted Revised         I-D Title   <Filename>\n\
------ ------- --------------------------------------------"
    for each draft:
      write out the list of start_date, revision_date, \
        filename-revision.txt, id_document_name

-rfc option enables printing the list of RFCs published. This code is about same as printing internet drafts execpt the data is fetched from the rfcs table and is printed in bit different format:

 Request For Comments:

  RFC   Stat Published     Title
------- -- ----------- ------------------------------------
RFCxxxx YY DATE        RFC_NAME
...

where xxxx is RFC number, YY is status (PS # Proposed, DS Draft, S # Full, H Historic, I # Informational, E Experimental), DATE is publication date.

- update-web-pages-abstracts-html (Retired)

This script used to generate HTML versions of internet drafts abstracts. It was retired in October 2009.

- update-web-pages-agenda-public (Done+integrated)

This is left to Pasi, and is not documented here.

Done and deployed in a1f58629f9e60114b4912a97763878297284e54e.

- update-web-pages-agenda (Done+integrated)

This is left to Pasi, and is not documented here.

Done and deployed in a1f58629f9e60114b4912a97763878297284e54e

- (support/wginfo.pl -- copy of update-web-pages-wginfo)

Identical copy of the update-web-pages-wginfo, see documentation of that.

- (support/wginfotohtml.pl -- same as update-web-pages-wginfo except in html format)

Same as update-web-pages-wginfo except it produces html output. In addition it supports adding additional urls for the group. Those additional urls are stored in the /a/www/ietf/wg.www.pages file after the "WG-Acronym" line. After "WG-Acronym" is found it skips 2 lines, and after that it splits each line with "|" character. The line format is keyword_name|url_value|url_name.

This prints out the html working group header (same information than what is update-web-pages-wginfo text version), working group description, working group milestones, list of internet drafts and list of rfcs, and finally html footer. The only real difference between the text version and html version of the working group header is the section containing the additional web pages (in addition to the text vs html format of course).

This section is added before the Last Modified line if additional web pages with the keyword_name matching working group acronym exists:

  In addition to this official charter maintained by the IETF
  Secretariat, there is additional information about this working 
  group on the Web at:<br><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="$url_value">$url_name</a>
<hr>

In addition to that section there is also link to the tools.ietf.org/wg/$group_acronym after Last Modified line. Also if the mailing list subscribe text has http text then no "mailto:" is added to it, and the mailing list archive is always made a link.

Another addition is that rfc lists contain "obsoleted by RFC xxxx,...", "updates RFC xxxx,...", and "updated by RFC xxxx,..." texts which are not present in the text version.

- support/wg_dir_html.pl (Done+integrated+db populated)

Oldv1: http://www.ietf.org/html.charters/wg-dir.html

Oldv2: http://www.ietf.org/dyn/wg/charter.html

New: http://datatracker.ietf.org/wg/

(Checked in on svn branch for 74 code sprint rev 1399 by chris) (Fixed bug for 75 code sprint rev 1596 by chris)

Problem: original Perl incorporates additional URLs from this file: http://www.ietf.org/wg.www.pages and from the Perl script itself. Replacement will require population of these links into the database using the new AreaURL model before it will be fully functional.

This script writes the /a/www/ietf/html.charters/wg-dir.html page.

It fetches the area specific additional web urls from the /a/www/ietf/wg.www.pages. It first seaches the line with "Area Name" text and then skips one line, and then starts reading the lines in format name_key|url_value|url_name, until it finds "#" line ending the Area Name section.

Then it generates html header for the page the body part and the bottom html footer. Header and bottom are mostly static text except about the current date and time.

The body part first contains the table of contents listing all active working groups (i.e. find name, acronum_id from acronym and areas tables where areas.status_id = 1 ordered by name).

Then for each area it will print out list of area directors and then all additional area specific urls (i.e. the ones having name_key matching the area name. After that it does some special casing for Applications Area, Internet Area and Transport Area, i.e. add some extra mailing list info for area. This is required as the wg.www.pages can only have ONE url for each area or wg. If there would be possible to have more URLs then all of this special casing would not be needed.

Then it finds acronum and name of all working groups in the area (i.e. the ones whose area.group.area_acronym_id matches of current area, and whose groups_ietf.status_id ## 1 and groups_ietf.group_type_id 1):

  SQL SELECT a.acronym, a.name
      FROM acronym a, area_group ag, groups_ietf g
      WHERE ag.area_acronym_id = AREA_ACRONYM_ID
        AND ag.group_acronym_id = g.group_acronym_id
        AND g.status_id = 1
        AND g.group_type_id = 1
        AND g.group_acronym_id = a.acronym_id
        ORDER by a.acronym;

and prints working group acronym (with link to working group page) and working group name for each working group. If there are no working groups in the area, it prints "TDB".

Special cases found in scripts which are not documented above

In some of the scripts there are some special cases hardcoded in the scripts. Those are not normally documented above, as we most likely need some proper way to make those. Here is list of that kind of special cases (not actual cases, but just generic description):

  • Acting working group chairs (i.e. add "Acting:" in front of the chair name, might be applicable for other roles too)
  • Roles for the advisors, i.e. add "(security)" or similar role name after the name
  • Support for additional url only supports ONE url per WG or area, thus some special cases are included in the scripts to get past that.
Clone this wiki locally