<?xml version="1.0"?>
<!--
    The contents of this file are subject to the Mozilla Public License Version 1.1
    (the "License"); you may not use this file except in compliance with the License.
    You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.

    Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
    WARRANTY OF ANY KIND, either express or implied. See the License for the specific
    language governing rights and limitations under the License.

    The Original Code is the Venice Web Communities System.

    The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
    for Silverwrist Design Studios.  Portions created by Eric J. Bowersox are
    Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios.  All Rights Reserved.

    Contributor(s): 
-->
<!-- Venice configuration file - full name should be fed to the Venice engine at startup -->
<venice-config>

  <!-- This section is used to configure the Venice engine itself. -->
  <engine>
    <!-- The fully-qualified Java classname of the Venice engine class.  -->
    <classname>com.silverwrist.venice.core.impl.VeniceEngineImpl</classname>

    <!-- The pathname of the sidebox config file, relative to the Web application root directory. -->
    <sidebox-config>WEB-INF/sidebox-config.xml</sidebox-config>
  </engine>

  <!-- This section is used to configure the database pool system. -->
  <database>
    <!-- The fully-qualified Java classname of the JDBC driver we wish to load. -->
    <driver>org.gjt.mm.mysql.Driver</driver>

    <!-- The URI of the database we wish to load. -->
    <uri>jdbc:mysql://localhost/venice</uri>

    <!-- The username to use to log into the database. -->
    <username>venicedb</username>

    <!-- The password to use to log into the database. -->
    <password>x00yes2K</password>

    <!-- The initial number of connections to allocate to the database. -->
    <initial-conns>5</initial-conns>

    <!-- The maximum number of connections to the database that can be open at once. -->
    <max-conns>20</max-conns>

    <!-- If this tag is specified, the connection pool will wait for a connection to
         become available if one is requested and none are available. If not, the 
         getConnection() method will throw an exception under those circumstances. --> 
    <wait-if-busy/>
  </database>

  <!-- This section is used to configure the default security contexts, and should probably
       not be tampered with. -->
  <security>
    <security-definition id="Global">
      <defined-roles>
	<role id="Anonymous" value="L+100">Anonymous User</role>
	<role id="Unverified" value="L+500">Unauthenticated User</role>
	<role id="Normal" value="L+1000">Normal User</role>
	<role id="AnyAdmin" value="HMIN">Any System Administrator</role>
	<role id="PFY" value="H+1000">System Assistant Administrator</role>
	<role id="BOFH" value="HMAX">Global System Administrator</role>
      </defined-roles>
      <defined-lists>
	<list id="UserLevels">
	  <element role="Global.Anonymous"/>
	  <element role="Global.Unverified"/>
	  <element role="Global.Normal"/>
	  <element role="UnrestrictedUser"/>
	</list>
	<list id="UserLevelsPFY">
	  <element role="Global.Anonymous"/>
	  <element role="Global.Unverified"/>
	  <element role="Global.Normal"/>
	  <element role="UnrestrictedUser"/>
	  <element role="Global.PFY"/>
	</list>
	<list id="CreateCommunity">
	  <permission/>
	  <element role="Global.Normal" default="true"/>
	  <element role="UnrestrictedUser"/>
	  <element role="Global.AnyAdmin"/>
	  <element role="Global.PFY"/>
	  <element role="Global.BOFH"/>
	</list>
      </defined-lists>
      <defaults>
	<default id="NewUser" role="Global.Unverified"/>
	<default id="AfterVerify" role="Global.Normal"/>
	<default id="AfterEmailChange" role="Global.Unverified"/>
      </defaults>
      <permissions>
	<permission id="ShowHiddenCategories" role="Global.AnyAdmin"/>
	<permission id="NoEmailVerify" role="Global.AnyAdmin"/>
	<permission id="SeeHiddenContactInfo" role="Global.AnyAdmin"/>
	<permission id="SearchHiddenCommunities" role="Global.AnyAdmin"/>
	<permission id="ShowHiddenCommunities" role="Global.AnyAdmin"/>
	<permission id="SearchHiddenCategories" role="Global.AnyAdmin"/>
	<permission id="SysAdminAccess" role="Global.AnyAdmin"/>
	<permission id="PublishFP" role="Global.AnyAdmin"/>
	<permission id="DesignatePFY" role="Global.BOFH"/>
      </permissions>
    </security-definition>
    <security-definition id="Community" parent="Global">
      <defined-roles>
	<role id="Member" value="L+500">Community Member</role>
	<role id="AnyAdmin" value="HMIN">Any Community Administrator</role>
	<role id="Cohost" value="H+1000">Community Co-Host</role>
	<role id="Host" value="H+1500">Community Host</role>
      </defined-roles>
      <defined-lists>
	<list id="Read">
	  <permission/>
	  <element role="Global.Anonymous"/>
	  <element role="Global.Unverified"/>
	  <element role="Global.Normal"/>
	  <element role="Community.Member" default="true"/>
	  <element role="UnrestrictedUser"/>
	  <element role="Community.AnyAdmin"/>
	  <element role="Community.Cohost"/>
	  <element role="Community.Host"/>
	  <element role="Global.AnyAdmin"/>
	</list>
	<list id="Write">
	  <permission/>
	  <element role="Community.AnyAdmin"/>
	  <element role="Community.Cohost" default="true"/>
	  <element role="Community.Host"/>
	  <element role="Global.AnyAdmin"/>
	  <element role="Global.PFY"/>
	  <element role="Global.BOFH"/>
	</list>
	<list id="Create">
	  <permission/>
	  <element role="Global.Normal"/>
	  <element role="Community.Member"/>
	  <element role="UnrestrictedUser"/>
	  <element role="Community.AnyAdmin"/>
	  <element role="Community.Cohost" default="true"/>
	  <element role="Community.Host"/>
	  <element role="Global.AnyAdmin"/>
	</list>
	<list id="Delete">
	  <permission/>
	  <element role="Community.AnyAdmin"/>
	  <element role="Community.Cohost"/>
	  <element role="Community.Host" default="true"/>
	  <element role="Global.AnyAdmin"/>
	  <element role="Global.PFY"/>
	  <element role="Global.BOFH"/>
	  <element role="NoAccess"/>
	</list>
	<list id="Join">
	  <permission/>
	  <element role="Global.Anonymous"/>
	  <element role="Global.Unverified"/>
	  <element role="Global.Normal" default="true"/>
	</list>
	<list id="UserLevels">
	  <element role="NotInList"/>
	  <element role="Global.Anonymous"/>
	  <element role="Global.Unverified"/>
	  <element role="Global.Normal"/>
	  <element role="Community.Member"/>
	  <element role="UnrestrictedUser"/>
	  <element role="Community.Cohost"/>
	</list>
      </defined-lists>
      <defaults>
	<default id="NewUser" role="Community.Member"/>
	<default id="Creator" role="Community.Host"/>
      </defaults>
      <permissions>
	<permission id="ShowAdmin" role="Community.AnyAdmin"/>
	<permission id="NoJoinRequired" role="Global.AnyAdmin"/>
	<permission id="NoKeyRequired" role="Global.AnyAdmin"/>
	<permission id="ShowHiddenMembers" role="Community.AnyAdmin"/>
	<permission id="ShowHiddenObjects" role="Community.AnyAdmin"/>
      </permissions>
    </security-definition>
    <security-definition id="Conference" parent="Community"> <!-- will move eventually -->
      <defined-roles>
	<role id="Member" value="L+500">Conference Member</role>
	<role id="AnyAdmin" value="HMIN">Any Conference Administrator</role>
	<role id="Host" value="H+1500">Conference Host</role>
      </defined-roles>
      <defined-lists>
	<list id="Read">
	  <permission/>
	  <element role="Global.Anonymous"/>
	  <element role="Global.Unverified"/>
	  <element role="Global.Normal"/>
	  <element role="Community.Member"/>
	  <element role="Conference.Member"/>
	  <element role="UnrestrictedUser"/>
	</list>
	<list id="Post">
	  <permission/>
	  <element role="Global.Anonymous"/>
	  <element role="Global.Unverified"/>
	  <element role="Global.Normal"/>
	  <element role="Community.Member"/>
	  <element role="Conference.Member"/>
	  <element role="UnrestrictedUser"/>
	  <element role="Conference.AnyAdmin"/>
	  <element role="Conference.Host"/>
	</list>
	<list id="Create">
	  <permission/>
	  <element role="Global.Anonymous"/>
	  <element role="Global.Unverified"/>
	  <element role="Global.Normal"/>
	  <element role="Community.Member"/>
	  <element role="Conference.Member"/>
	  <element role="UnrestrictedUser"/>
	  <element role="Conference.AnyAdmin"/>
	  <element role="Conference.Host"/>
	</list>
	<list id="Hide">
	  <permission/>
	  <element role="Conference.AnyAdmin"/>
	  <element role="Conference.Host" default="true"/>
	  <element role="Community.AnyAdmin"/>
	  <element role="Community.Cohost"/>
	  <element role="Community.Host"/>
	  <element role="Global.AnyAdmin"/>
	</list>
	<list id="Nuke">
	  <permission/>
	  <element role="Conference.AnyAdmin"/>
	  <element role="Conference.Host" default="true"/>
	  <element role="Community.AnyAdmin"/>
	  <element role="Community.Cohost"/>
	  <element role="Community.Host"/>
	  <element role="Global.AnyAdmin"/>
	</list>
	<list id="Change">
	  <permission/>
	  <element role="Conference.AnyAdmin"/>
	  <element role="Conference.Host" default="true"/>
	  <element role="Community.AnyAdmin"/>
	  <element role="Community.Cohost"/>
	  <element role="Community.Host"/>
	  <element role="Global.AnyAdmin"/>
	</list>
	<list id="Delete">
	  <permission/>
	  <element role="Community.AnyAdmin"/>
	  <element role="Community.Cohost" default="true"/>
	  <element role="Community.Host"/>
	  <element role="Global.AnyAdmin"/>
	  <element role="Global.PFY"/>
	  <element role="Global.BOFH"/>
	  <element role="NoAccess"/>
	</list>
	<list id="UserLevels">
	  <element role="NotInList"/>
	  <element role="Global.Anonymous"/>
	  <element role="Global.Unverified"/>
	  <element role="Global.Normal"/>
	  <element role="Community.Member"/>
	  <element role="Conference.Member"/>
	  <element role="UnrestrictedUser"/>
	  <element role="Conference.Host"/>
	</list>
      </defined-lists>
      <defaults>
	<default id="HostPrivs" role="Community.AnyAdmin"/>
	<default id="NewUser" role="Conference.Member"/>
	<default id="NewHost" role="Conference.Host"/>
	<default id="Creator" role="Conference.Host"/>
	<default id="Read.Public" role="Community.Member"/>
	<default id="Read.Private" role="Conference.Member"/>
	<default id="Post.Public" role="Community.Member"/>
	<default id="Post.Private" role="Conference.Member"/>
	<default id="Create.Public" role="Community.Member"/>
	<default id="Create.Private" role="Conference.Member"/>
      </defaults>
      <permissions>
      </permissions>
    </security-definition>
  </security>

  <!-- This section is used to configure electronic mail services. -->
  <email>
    <!-- The SMTP server to use when sending messages out.  This server must be
         configured to allow relaying from the host running Venice. -->
    <smtp-host>janelane</smtp-host>

    <!-- The return address to use on all email messages. -->
    <mail-from-addr>nobody@delenn.silverwrist.internal</mail-from-addr>

    <!-- The string to use in the "X-Mailer:" header on all outgoing mail. -->
    <mailer>Venice AutoMail System v0.01</mailer>
  </email>

  <!-- This section dictates which dictionary files get loaded into the spelling checker's
       main dictionary.  The default lexicon is a standard US English one, with a supplemental list of
       words provided by Erbo. -->
  <dictionary>
    <file>/home/erbo/venice/WEB-INF/en-us.dict</file>
    <file>/home/erbo/venice/WEB-INF/erbo.dict</file>
  </dictionary>

  <!-- Settings for dealing with uploads -->
  <upload>
    <!-- Don't try to compress any file whose type falls in this list -->
    <no-compress>
      <type>image/gif</type>
      <type>image/jpg</type>
      <type>image/jpeg</type>
    </no-compress>

  </upload>

  <!-- This section holds "stock messages" with replaceable parameters that may
       be fed to emailed output. -->
  <messages>
    <!-- A "signature" that gets appended to emailed messages. -->
    <signature>
      <![CDATA[
Venice - community services, conferencing and more.  <http://venice.sourceforge.net>
      ]]>
    </signature>

    <!-- This is the message sent out with the email confirmation number. -->
    <!-- Parameters: username - account user name, confnum - confirmation number -->
    <email-confirm>
      <![CDATA[
Welcome to the Venice conferencing system!  In order to fully activate your
account after you register or change your E-mail address, you must provide a
confirmation number to the system.  Please enter this number into the "Confirm
E-mail Address" dialog on the system when indicated.

Your confirmation number for your account "${username}" is ${confnum}.

Thank you, and enjoy the Venice conferencing system!

-- The Management
      ]]>
    </email-confirm>

    <!-- The subject of the message with the email confirmation number. -->
    <email-confirm-subject>Venice Email Confirmation</email-confirm-subject>

    <!-- This is the "password reminder" message. -->
    <!-- Parameters: username - account user name, reminder - password reminder -->
    <reminder>
      <![CDATA[
Here is the password reminder for your account "${username}" as you requested:

${reminder}

If this reminder is not sufficient for you to remember what your password is,
then the system can change your password for you.  To do so, please visit the following URL:

http://delenn/venice/passrecovery/${change.uid}.${change.auth}

Your password will be changed and a new password will be E-mailed to you at this address.

If you did NOT request a password reminder, then this message was sent by someone
attempting to access your account without your knowledge.  Do not panic!  Nothing has
happened to your account or password yet, but please do notify the system administrator.

-- The Management
      ]]>
    </reminder>

    <reminder-subject>Venice Password Reminder Message</reminder-subject>

    <password-change>
      <![CDATA[
The password for your account "${username}" has been changed.  The new password is "${password}".

You should log into Venice immediately and change the password to something else.  You can change the
password for your account, once you are logged in, by clicking on the "Profile" link in the top bar.

If you did NOT request a password change on your account, please notify the system administrator
IMMEDIATELY.

-- The Management
      ]]>
    </password-change>

    <password-change-subject>Venice Password Changed</password-change-subject>

    <!-- Invitation message to a public community -->
    <!-- Parameters: community.name = name of community, community.alias = alias of community,
                     personal = personal message, fullname = name of inviter,
                     username = user name of inviter -->
    <invite-public>
      <![CDATA[
Hi! I would like to invite you to join the "${community.name}" community on the Venice conferencing system.
To do so, you must register as a user, which is absolutely free!  Just point your Web browser at
<http://delenn/venice/sig/${community.alias}> and click the "Create Account" link at the top of the page,
or click the "Log In" link if you already have a Venice account.  Once you have completed the process,
click the "Join Now" button.  You will then be able to take part in the conferences that are going on in
the community.

${personal}

Hope to see you in "${community.name}" soon!

-- ${fullname} (Venice user ID: ${username})
      ]]>
    </invite-public>

    <!-- Invitation message to a private community -->
    <!-- Parameters: community.name = name of community, community.alias = alias of community,
                     joinkey = join key for community, personal = personal message,
                     fullname = name of inviter, username = user name of inviter -->
    <invite-private>
      <![CDATA[
Hi! I would like to invite you to join the "${community.name}" community on the Venice conferencing system.
To do so, you must register as a user, which is absolutely free!  Just point your Web browser at
<http://delenn/venice/sig/${community.alias}> and click the "Create Account" link at the top of the page,
or click the "Log In" link if you already have a Venice account.  Once you have completed the process,
click the "Join Now" button.  You will be prompted for the "password" for this community, which is
"${joinkey}". You will then be able to take part in the conferences that are going on in the community.

${personal}

Hope to see you in "${community.name}" soon!

-- ${fullname} (Venice user ID: ${username})
      ]]>
    </invite-private>

    <!-- Subject line for invitation messages -->
    <!-- Parameters: community.name = name of community -->
    <subj-invite>Invitation to "${community.name}" Community</subj-invite>

  </messages>

</venice-config>
