Latest commit 029eade Sep 13, 2016 @capflam capflam Add support for salted hashes in users credentials
Now, it is possible to use a random salt to hash passwords. The salt must be
provided, encoded in base64.
In yaws configuration is must follow the format:

  user = "User:{Algo}$Salt$Hash"

And in .yaws_file:

  {"User", "Algo", "Salt", "Hash"}.

Using clear passwords or hashes without salt is still possible. Yaws startup
script always uses salted hashes



RSS is very cool! To see it in action look no further than Firebird 1.0.
Then go to an RSS-enabled site, e.g . Note the little orange
icon down in the right corner of the browser window. Click on the icon
and add the RSS-feed to you personal toolbar. Then click on your toolbar,
on the RSS-bookmark and watch the nice menu of slashdot article-summarys
popping up.

The module yaws_rss.erl provides an RSS store/interface so that
you can RSS enable your application. More documentation can be
found in the yaws_rss.erl file (edoc).


Make sure your top page has the corresponding link information
in the 'head' part as shown in the example below:

<link rel="alternate"
      title="Example RSS"
Hello world

The link info above refers to a file rss.yaws which
could look something like this:


out(A) ->
    case yaws_rss:retrieve(test, xml) of
	{ok, Xml} ->
	    {content, "text/xml", head()++Xml++tail()};
	_ ->
	    {content, "text/xml", ""}

head() ->
"<rss version=\"2.0\" xmlns:dc=\"\">
    <title>Exampel RSS feed</title>
     Bla bla....

tail() ->
"  </channel>



To insert RSS items into the feed from your application, you
can write code like:

yaws_rss:insert(test, xml, "Yaws now support RSS feeds.",
	            "Yaws has now been extended to support....",
                    "Bill Smith").

First comes the application (RSSid) then a tag (these were used in
rss.yaws when we retrieved the RSS content). Then follows the
Title, Link, Description and Creator.

The idea is that several independent application should be able
to use the yaws_rss.erl API without affecting each other. Also,
one application may have several RSS feeds (hence the Tag).


Inside a <server> block you specify the application you want
to produce RSS content as:

  rss_id = <application>
  rss_dir = <database directory>

The rss_id corresponds to the 'App' argument above and must be
defined by the application in question. So, for example,
the wiki application is using 'wiki' as rss_id. The rss_dir
setting specifies the directory where the RSS database resides.
Both are mandatory.

Other, non-mandatory, configuration parameters are (with
explanation and default values):

  rss_expire  =  false | days   # expire items, or not (false)
  rss_days    =  <integer>      # days until expired
  rss_rm_exp  =  <bool>         # remove expired items (false)
  rss_max     =  <integer>      # max no.of items stored (infinite)

Good luck !