rfc

Pretty RFC indexes and reformats RFC documents for easier discovery and viewing.

Github星跟蹤圖

Pretty RFC

The goal of this projects is to collect and reformat official RFC documents and
popular drafts.

RFCs, as published officially, are in unsightly and impractical paged format.
What's worse, the official format of most RFCs is plain text, even though they
are authored in richer formats such as XML.

Running the app

Dependencies:

  • git
  • Ruby 1.9
  • rake
  • Bundler
  • libxml2
  • PostgreSQL

By default, the app will try to connect to the database named "rfc" on localhost
without a username or password. This can be affected with the DATABASE_URL
environment variable. If the database doesn't exist, the boostrap
script
will try to create it.

# initialize dependencies and database
$ script/bootstrap

# start the server
$ bundle exec rackup

# now visit http://localhost:9292/

The RFC index

The index of all RFCs is pulled from FTP:
ftp://ftp.rfc-editor.org/in-notes/rfc-index.xml

Then the metadata for each RFC entry is imported to the database. This is done
by the "import_index" rake task as part of the bootstrap process.

The search index

Searching is done with PostgreSQL full text searching. The
necessary indexes, stored procedures and triggers for this are in Searchable
module.

The search results ordering is not perfect, but it is improved by bringing in a
popularity score from faqs.org. This is done by the "import_popular" rake
task
as part of the bootstrap process.

Fetching and rendering RFCs

When an RFC is first requested and it has never been processed, the app tries to
look up its source XML document and render it to HTML. The XML lookup goes as
follows:

  1. The fetcher tries to find the XML in http://xml.resource.org/public/rfc/xml/
    where some RFCs in the 2000–53xx range can be found.

  2. Failing that, it fetches the metadata for the RFC from
    http://datatracker.ietf.org/doc/

  3. If there is a link to the XML from the datatracker, use that. There probably
    won't be a link, though.

  4. When there is no XML link, the fetcher looks up the draft name for the RFC
    and checks if it can at least find the XML for its draft at
    http://www.ietf.org/id/

Note: This process only discovers XML sources for a small subset of RFCs.
This is the biggest problem I have right now. The XML and nroff files in which
RFCs were authored are usually not published, but are archived by rfc-editor.org
and available by request by email.

I'm investigating is there a way for bulk retrieval of these source files.

If unable to obtain them, I will have to reformat RFCs by parsing the current
publications instead of the source XML. This might be a lot of work.

When obtained, the XML is parsed and rendered to HTML by the RFC module.
The templates used for generating HTML are in templates/.

主要指標

概覽
名稱與所有者mislav/rfc
主編程語言JavaScript
編程語言Ruby (語言數: 6)
平台
許可證Creative Commons Zero v1.0 Universal
所有者活动
創建於2011-08-29 09:14:46
推送於2017-03-18 03:33:33
最后一次提交2016-02-13 11:46:32
發布數0
用户参与
星數0.9k
關注者數31
派生數57
提交數76
已啟用問題?
問題數21
打開的問題數9
拉請求數0
打開的拉請求數1
關閉的拉請求數4
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?