class aes::aes_sw {

  $examadm_user = examadm
  $examadm_group = $examadm_user
  $examadm_home = "/home/${examadm_user}"

  package {
    [
      'a2ps',
      'cronie',
      'java-11-openjdk-devel',
    ]:
      ensure  => installed,
  }

  user { 'examadm' :
    ensure     => present,
    managehome => false,
    membership => inclusive,
    system     => true,
    shell      => '/sbin/nologin',
  }

  file { $examadm_home:
    ensure => directory,
    mode   => '0755',
    owner  => $examadm_user,
    group  => $examadm_group,
  }

  file { '/etc/systemd/system/aes_login.service':
    ensure  => file,
    owner   => root,
    group   => root,
    mode    => '0644',
    content => @(LOGINSERVICE),
    [Unit]
    Description=AES Login server
    After=network.target
    
    [Service]
    Type=simple
    User=examadm
    WorkingDirectory=/home/examadm/Version-3.1/exam
    ExecStart=/usr/bin/python3 /home/examadm/Version-3.1/pub/bin/examiner/find_pnr_and_otp_from_liuid.py

    [Install]
    WantedBy=multi-user.target
    | LOGINSERVICE
  }

  # todo: logrotate
  service { 'aes_login' :
    ensure => 'running',
    enable => true,
  }

  file { '/etc/systemd/system/aes_ms.service':
    ensure  => file,
    owner   => root,
    group   => root,
    mode    => '0644',
    content => @(MSSERVICE),
    [Unit]
    Description=AES Exam server
    After=network.target
    
    [Service]
    Type=simple
    User=examadm
    WorkingDirectory=/home/examadm/Version-3.1
    ExecStart=/usr/bin/java -Xmx512M -jar /home/examadm/Version-3.1/pub/bin/examiner/ms.jar /home/examadm/Version-3.1

    [Install]
    WantedBy=multi-user.target
    | MSSERVICE
  }

  file { '/etc/cron.daily/aes_ms':
    ensure  => file,
    owner   => root,
    group   => root,
    mode    => '0700',
    content => @(MSCRON),
    #!/bin/sh
    /usr/bin/systemctl restart aes_ms
    | MSCRON
  }

  # todo: logrotate
  service { 'aes_ms' :
    ensure => 'running',
    enable => true,
  }

  exec { 'script-repo-updated':
    command => "/opt/utils/update_repo.sh ${examadm_home}/scripts https://oauth2:iAyewr9Jq5E-tnsVrmbj@gitlab.liu.se/examadm/scripts.git master",
    cwd     => $examadm_home,
    user    => $examadm_user,
    group   => $examadm_group,
  }

  schedule { 'everyday':
    period => daily,
    range  => '01:00 - 04:00',
  }
}