<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
  <constants>
  </constants>
  <classes>
    <class id="ItopFenceLogin" _delta="define">
      <parent>cmdbAbstractObject</parent>
      <properties>
        <comment><![CDATA[/**
 * iTop Fence Login log
 * @copyright   Copyright (C) 2019 Combodo SARL
 * @license     https://www.combodo.com/documentation/combodo-software-license.html
 */]]></comment>
        <category>addon,application,grant_by_profile</category>
        <abstract>false</abstract>
        <key_type>autoincrement</key_type>
        <db_table>itop_fence_login</db_table>
        <db_key_field>id</db_key_field>
        <db_final_class_field/>
        <naming>
          <attributes>
            <attribute id="login"/>
          </attributes>
        </naming>
        <display_template/>
        <icon/>
        <reconciliation>
          <attributes>
            <attribute id="login"/>
          </attributes>
        </reconciliation>
      </properties>
      <methods/>
      <fields>
        <field id="login" xsi:type="AttributeString">
          <sql>login</sql>
          <default_value/>
          <is_null_allowed>false</is_null_allowed>
        </field>
        <field id="date" xsi:type="AttributeDateTime">
          <sql>date</sql>
          <default_value/>
          <is_null_allowed>false</is_null_allowed>
          <tracking_level>none</tracking_level>
        </field>
        <field id="ip" xsi:type="AttributeString">
          <sql>ip</sql>
          <default_value/>
          <is_null_allowed>false</is_null_allowed>
        </field>
        <field id="status" xsi:type="AttributeString">
          <sql>status</sql>
          <default_value/>
          <is_null_allowed>true</is_null_allowed>
          <tracking_level>none</tracking_level>
        </field>
        <field id="successive_failed_login_counter" xsi:type="AttributeInteger">
          <sql>successive_failed_login_counter</sql>
          <default_value>0</default_value>
          <is_null_allowed>false</is_null_allowed>
          <tracking_level>none</tracking_level>
        </field>

        <field id="no_answer_until" xsi:type="AttributeDatetime">
          <sql>no_answer_until</sql>
          <default_value/>
          <is_null_allowed>true</is_null_allowed>
        </field>

        <field id="login_always_invalid_until" xsi:type="AttributeDatetime">
          <sql>login_always_invalid_until</sql>
          <default_value/>
          <is_null_allowed>true</is_null_allowed>
        </field>
      </fields>
      <presentation>
        <details>
          <items>
            <item id="col:col1">
              <rank>80</rank>
              <items>
                <item id="login">
                  <rank>10</rank>
                </item>
                <item id="successive_failed_login_counter">
                  <rank>15</rank>
                </item>
                <item id="date">
                  <rank>20</rank>
                </item>
                <item id="status">
                  <rank>30</rank>
                </item>
              </items>
            </item>
            <item id="col:col2">
              <rank>160</rank>
              <items>
                <item id="ip">
                  <rank>10</rank>
                </item>
                <item id="no_answer_until">
                  <rank>15</rank>
                </item>
                <item id="login_always_invalid_until">
                  <rank>20</rank>
                </item>
              </items>
            </item>
          </items>
        </details>
        <default_search>
          <items>
            <item id="friendlyname">
              <rank>10</rank>
            </item>
            <item id="date">
              <rank>20</rank>
            </item>
            <item id="successive_failed_login_counter">
              <rank>30</rank>
            </item>
            <item id="status">
              <rank>40</rank>
            </item>
          </items>
        </default_search>
        <search>
          <items>
            <item id="login">
              <rank>10</rank>
            </item>
            <item id="date">
              <rank>20</rank>
            </item>
            <item id="successive_failed_login_counter">
              <rank>30</rank>
            </item>
            <item id="status">
              <rank>40</rank>
            </item>
            <item id="ip">
              <rank>50</rank>
            </item>
            <item id="no_answer_until">
              <rank>60</rank>
            </item>
            <item id="login_always_invalid_until">
              <rank>70</rank>
            </item>
          </items>
        </search>
        <list>
          <items>
            <item id="status">
              <rank>10</rank>
            </item>
            <item id="date">
              <rank>20</rank>
            </item>
            <item id="successive_failed_login_counter">
              <rank>30</rank>
            </item>
          </items>
        </list>
      </presentation>
    </class>
  </classes>
  <menus>
    <menu id="SearchItopFenceLogin" xsi:type="OQLMenuNode" _delta="define">
      <rank>40</rank>
      <parent>SystemTools</parent>
      <oql><![CDATA[SELECT ItopFenceLogin]]></oql>
      <do_search>1</do_search>
      <enable_class>ResourceAdminMenu</enable_class>
      <enable_action>UR_ACTION_MODIFY</enable_action>
    </menu>
  </menus>
  <user_rights>
    <groups>
    </groups>
    <profiles>
    </profiles>
  </user_rights>

  <module_parameters>
    <parameters id="itop-fence" _delta="define">
      <enabled type="bool">true</enabled>
      <max_try_without_security>3</max_try_without_security>
      <trusted_ip_list></trusted_ip_list>
      <malicious_ip_list></malicious_ip_list>
      <recaptcha_public_key></recaptcha_public_key>
      <recaptcha_private_key></recaptcha_private_key>
      <recaptcha_minimum_score>0.4</recaptcha_minimum_score>
      <slowdown_initial_duration>500000</slowdown_initial_duration>
      <slowdown_duration_incrementation>2</slowdown_duration_incrementation>
      <slowdown_duration_max>30000000</slowdown_duration_max>
      <login_always_invalid_duration>3600</login_always_invalid_duration>
      <no_answer_duration>3600</no_answer_duration>
      <no_answer_http_response_code>429</no_answer_http_response_code>
    </parameters>
  </module_parameters>
</itop_design>
