1 /* 2 * This file is part of Waarp Project (named also Waarp or GG). 3 * 4 * Copyright (c) 2019, Waarp SAS, and individual contributors by the @author 5 * tags. See the COPYRIGHT.txt in the distribution for a full listing of 6 * individual contributors. 7 * 8 * All Waarp Project is free software: you can redistribute it and/or 9 * modify it under the terms of the GNU General Public License as published by 10 * the Free Software Foundation, either version 3 of the License, or (at your 11 * option) any later version. 12 * 13 * Waarp is distributed in the hope that it will be useful, but WITHOUT ANY 14 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License along with 18 * Waarp . If not, see <http://www.gnu.org/licenses/>. 19 */ 20 package org.waarp.common.file; 21 22 import org.waarp.common.command.NextCommandReply; 23 import org.waarp.common.command.exception.Reply421Exception; 24 import org.waarp.common.command.exception.Reply530Exception; 25 26 /** 27 * Interface for Authentication 28 */ 29 public interface AuthInterface { 30 /** 31 * @return the Ftp SessionInterface 32 */ 33 SessionInterface getSession(); 34 35 /** 36 * @param user the user to set 37 * 38 * @return (NOOP, 230) if the user is OK, else return the following command 39 * that must follow (usually PASS) and 40 * the associated reply 41 * 42 * @throws Reply421Exception if there is a problem during the 43 * authentication 44 * @throws Reply530Exception if there is a problem during the 45 * authentication 46 */ 47 NextCommandReply setUser(String user) 48 throws Reply421Exception, Reply530Exception; 49 50 /** 51 * @return the user 52 */ 53 String getUser(); 54 55 /** 56 * @param password the password to set 57 * 58 * @return (NOOP, 230) if the Password is OK, else return the following 59 * command that must follow (usually ACCT) 60 * and the associated reply 61 * 62 * @throws Reply421Exception if there is a problem during the 63 * authentication 64 * @throws Reply530Exception if there is a problem during the 65 * authentication 66 */ 67 NextCommandReply setPassword(String password) 68 throws Reply421Exception, Reply530Exception; 69 70 /** 71 * Is the current Authentication OK for full identification. It must be true 72 * after a correct sequence of 73 * identification: At most, it is true when setAccount is OK. It could be 74 * positive before (user name only, 75 * user+password only).<br> 76 * In the current implementation, as USER+PASS+ACCT are needed, it will be 77 * true only after a correct ACCT. 78 * 79 * @return True if the user has a positive login, else False 80 */ 81 boolean isIdentified(); 82 83 /** 84 * @return True if the current authentication has an admin right (shutdown, 85 * bandwidth limitation) 86 */ 87 boolean isAdmin(); 88 89 /** 90 * Is the given complete relative Path valid from Authentication/Business 91 * point of view. 92 * 93 * @param newPath 94 * 95 * @return True if it is Valid 96 */ 97 boolean isBusinessPathValid(String newPath); 98 99 /** 100 * Return the relative path for this account according to the Business 101 * (without true root of mount).<br> 102 * 103 * @return Return the relative path for this account 104 */ 105 String getBusinessPath(); 106 107 /** 108 * Return the mount point 109 * 110 * @return the mount point 111 */ 112 String getBaseDirectory(); 113 114 /** 115 * Return the relative path from a file (without mount point) 116 * 117 * @param file (full path with mount point) 118 * 119 * @return the relative path from a file 120 */ 121 String getRelativePath(String file); 122 123 /** 124 * Clean object 125 */ 126 void clear(); 127 }