docs: def setup_ufw():
      """
      Setup basic ufw rules just for ssh login
      """
      if not env.ENABLE_UFW: return
     
      ufw_state = server_state('ufw_installed')
      if ufw_state and not env.overwrite or ufw_state == str(env.HOST_SSH_PORT): return
      #check for actual package
      ufw = run("dpkg -l | grep 'ufw' | awk '{print $2}'").strip()
      if not ufw:
          if env.verbosity:
              print env.host, "INSTALLING & ENABLING FIREWALL ufw"
          install_package('ufw')
  
      if env.verbosity:
          print env.host, "CONFIGURING FIREWALL ufw"
      #upload basic woven (ssh) ufw app config
      upload_template('/'.join(['woven','ufw.txt']),
          '/etc/ufw/applications.d/woven',
          {'HOST_SSH_PORT':env.HOST_SSH_PORT},
          use_sudo=True,
          backup=False)
      sudo('chown root:root /etc/ufw/applications.d/woven')
      with settings(warn_only=True):
          if not ufw_state:
              sudo('ufw allow woven')
          else:
              sudo('ufw app update woven')
      _backup_file('/etc/ufw/ufw.conf')
          
      #enable ufw
      sed('/etc/ufw/ufw.conf','ENABLED=no','ENABLED=yes',use_sudo=True, backup='')
      with settings(warn_only=True):
          output = sudo('ufw reload')
          if env.verbosity:
              print output
              
      set_server_state('ufw_installed',str(env.HOST_SSH_PORT))
      return