Skip to content
This repository has been archived by the owner on May 23, 2019. It is now read-only.

Commit

Permalink
Update #203: add no_activity_log configuration.
Browse files Browse the repository at this point in the history
  • Loading branch information
hdsdi3g committed Dec 19, 2016
1 parent a7572bf commit ceadebe
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 7 deletions.
23 changes: 16 additions & 7 deletions app/hd3gtv/mydmam/ftpserver/FTPActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -135,21 +135,34 @@ public String toString() {

@SuppressWarnings("unchecked")
static void push(FtpSession session, FtpRequest request) throws FtpException {
FTPUser user = (FTPUser) session.getUser();

Action action = Action.valueOf(request.getCommand());
if (action != Action.REST & action != Action.RETR) {
FTPOperations.get().addActiveUser((FTPUser) session.getUser());
}

if (user.getGroup().isUserHasActivityDisabled(user.getName())) {
if (Loggers.FTPserver.isTraceEnabled()) {
Loggers.FTPserver.trace("No activity for " + user);
}
return;
}

FTPActivity activity = new FTPActivity();
activity.activity_date = System.currentTimeMillis();
activity.session_key = session.getSessionId().toString();
activity.login_time = session.getLoginTime().getTime();
activity.activity_key = activity.session_key + "-" + (activity.activity_date - activity.login_time);
activity.client_host = session.getClientAddress().getHostString();

FTPUser user = (FTPUser) session.getUser();
activity.user_id = user.getUserId();
activity.working_directory = ((NativeFtpFile) session.getFileSystemView().getWorkingDirectory()).getAbsolutePath();
activity.user_name = user.getName();
activity.user_domain = user.getDomain();
activity.user_group = user.getGroupName();

activity.action = Action.valueOf(request.getCommand());
activity.action = action;
if (activity.action == Action.RNFR) {
activity.argument = request.getArgument() + " >";
} else if (activity.action == Action.RNTO) {
Expand Down Expand Up @@ -192,10 +205,6 @@ static void push(FtpSession session, FtpRequest request) throws FtpException {
} catch (Exception e) {
Loggers.FTPserver.warn("Error during store activity in DB: " + e);
}

if (activity.action != Action.REST & activity.action != Action.RETR) {
FTPOperations.get().addActiveUser((FTPUser) session.getUser());
}
}

/**
Expand Down Expand Up @@ -256,7 +265,7 @@ public static void getAllUserActivitiesCSV(String user_session_ref, OutputStream

printer.println(new String[] { "Date", "Session", "User name", "User domain", "User group", "User session ref", "Action", "Working Directory", "Argument", "File size", "File offset",
"Sec after login", "Client" });

ElastisearchCrawlerReader ecr = Elasticsearch.createCrawlerReader();
ecr.setIndices(ES_INDEX);
ecr.setTypes(ES_TYPE);
Expand Down
16 changes: 16 additions & 0 deletions app/hd3gtv/mydmam/ftpserver/FTPGroup.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@

import org.apache.commons.io.FileUtils;

import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;

Expand Down Expand Up @@ -148,6 +149,8 @@ public static FTPGroup getFromName(String group_name) {

private File trash_directory;

private ArrayList<String> users_no_activity_log;

private FTPGroup(String group_name, HashMap<String, ConfigurationItem> all_groups_confs) throws Exception {
name = group_name;
disabled_group = Configuration.getValueBoolean(all_groups_confs, group_name, "disabled");
Expand All @@ -171,6 +174,11 @@ private FTPGroup(String group_name, HashMap<String, ConfigurationItem> all_group
FileUtils.forceMkdir(base_working_dir);
}

users_no_activity_log = Configuration.getValues(all_groups_confs, group_name, "no_activity_log", null);
if (users_no_activity_log == null) {
users_no_activity_log = new ArrayList<>();
}

min_disk_space_before_warn = Configuration.getValue(all_groups_confs, group_name, "min_disk_space_before_warn", 0);
min_disk_space_before_stop = Configuration.getValue(all_groups_confs, group_name, "min_disk_space_before_stop", 0);
pathindex_storagename = Configuration.getValue(all_groups_confs, group_name, "pathindex_storagename", null);
Expand All @@ -189,6 +197,7 @@ private FTPGroup(String group_name, HashMap<String, ConfigurationItem> all_group
if (pathindex_storagename != null) {
Storage.registerStorage(new StorageLocalFile(base_working_dir, pathindex_storagename, false, 3600));
}

}

private File makeUserHomeDirectoryPath(String user_name, String user_domain) {
Expand Down Expand Up @@ -420,6 +429,8 @@ public void doAnAction(JsonObject order) throws Exception {
}
}

private static final Gson _gson_simple = new Gson();

public JsonElement getInstanceStatusItem() {
JsonObject jo = new JsonObject();
jo.addProperty("name", name);
Expand All @@ -435,7 +446,12 @@ public JsonElement getInstanceStatusItem() {
jo.addProperty("short_activity_log", short_activity_log);
jo.addProperty("last_free_space", last_free_space);
jo.addProperty("trash_directory", trash_directory.getAbsolutePath());
jo.addProperty("users_no_activity_log", _gson_simple.toJson(users_no_activity_log));
return jo;
}

public boolean isUserHasActivityDisabled(String simple_username) {// TODO
return users_no_activity_log.contains(simple_username);
}

}
1 change: 1 addition & 0 deletions conf/app.d-examples/ftpserver.yml.example
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ ftpservergroups:
# pathindex_storagename: FTP Group 1 # set if you want to indexing FTP accounts, with this storage name
# domain_isolation: false # If you want use separate directories for each domain (by example if base_working_dir is splitted between with differents mounts).
# short_activity_log: false # Set true if you don't want keep FTP activities logs during a long time.
# no_activity_log: [account1, account2] # Disable activity log for this accounts. It never display an history for it !
# you can add many groups

# Play Server configuration for create FTP Users, and assign it a group and a domain
Expand Down

0 comments on commit ceadebe

Please sign in to comment.