Skip to content

Commit

Permalink
HpFeeds enabler added in Settings.
Browse files Browse the repository at this point in the history
  • Loading branch information
irinil committed Aug 15, 2020
1 parent 6e13b31 commit 2a7a11e
Show file tree
Hide file tree
Showing 8 changed files with 166 additions and 58 deletions.
8 changes: 6 additions & 2 deletions src/main/java/de/tudarmstadt/informatik/hostage/Handler.java
Expand Up @@ -439,8 +439,12 @@ protected void logAMQPPackets() {
}

private void uploadHpfeeds(){
PublishHelper publishHelper = new PublishHelper();
publishHelper.uploadRecordHpfeeds();
boolean enabledHpfeeds = pref.getBoolean("pref_hpfeeds_server",false);
if(enabledHpfeeds) {
PublishHelper publishHelper = new PublishHelper();
publishHelper.uploadRecordHpfeeds();
}

}

}
@@ -1,13 +1,18 @@
package de.tudarmstadt.informatik.hostage.hpfeeds.publisher;

import android.content.SharedPreferences;
import android.preference.PreferenceManager;

import java.io.IOException;
import java.util.ArrayList;

import de.tudarmstadt.informatik.hostage.HostageApplication;
import de.tudarmstadt.informatik.hostage.R;
import de.tudarmstadt.informatik.hostage.commons.JSONHelper;
import de.tudarmstadt.informatik.hostage.logging.DaoSession;
import de.tudarmstadt.informatik.hostage.logging.RecordAll;
import de.tudarmstadt.informatik.hostage.persistence.DAO.DAOHelper;
import de.tudarmstadt.informatik.hostage.ui.activity.MainActivity;
import de.tudarmstadt.informatik.hostage.ui.model.LogFilter;

public class PublishHelper {
Expand All @@ -19,11 +24,26 @@ public class PublishHelper {
private int attackRecordLimit=999;
LogFilter filter = null;
JSONHelper jsonHelper = new JSONHelper();
private String host = "";
private int port = 0;
private String ident = "";
private String secret = "";
private String channel = "";


public PublishHelper(){
this.dbSession = HostageApplication.getInstances().getDaoSession();
this.daoHelper = new DAOHelper(dbSession);
initializeHpFeedsCredentials();
}

private void initializeHpFeedsCredentials(){
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(MainActivity.getContext());
this.host = preferences.getString("pref_host_hpfeeds", String.valueOf(R.string.hpfeeds_host));
this.port = Integer.parseInt(preferences.getString("pref_port_hpfeeds", String.valueOf(R.integer.hpfeeds_port)));
this.ident = preferences.getString("pref_ident_hpfeeds", String.valueOf(R.string.hpfeeds_ident));
this.secret = preferences.getString("pref_secret_hpfeeds", String.valueOf(R.string.hpfeeds_secret));
this.channel = preferences.getString("pref_secret_channel", String.valueOf(R.string.hpfeeds_channel));
}

/**
Expand Down Expand Up @@ -57,7 +77,7 @@ private void publisher() throws Hpfeeds.ReadTimeOutException, Hpfeeds.EOSExcepti
Publisher publisher = new Publisher();
String initialConfigurationUrl = jsonHelper.getFilePath();

publisher.setCommand("192.168.1.3",20000,"testing","secretkey","chan2",initialConfigurationUrl);
publisher.setCommand(host,port,ident,secret,channel,initialConfigurationUrl);

publisher.publishFile();

Expand Down
Expand Up @@ -834,11 +834,7 @@ private void addArduinoProfile(){
public static String getProfile(){
String sharedPreferencePath = Hostage.getContext().getString(
R.string.shared_preference_path);
String profile = Hostage
.getContext()
.getSharedPreferences(sharedPreferencePath,
Context.MODE_PRIVATE).getString("os", "");
return profile;
return Hostage.getContext().getSharedPreferences(sharedPreferencePath, Context.MODE_PRIVATE).getString("os", "");
}


Expand Down
Expand Up @@ -58,31 +58,38 @@ public Dialog onCreateDialog(Bundle savedInstance) {
((TextView)view.findViewById(R.id.connectioninfo_externalip_value)).setText(externalIP);
}


return getConnectionInfoDialog(ssid).create();
}

private MaterialAlertDialogBuilder getConnectionInfoDialog(String ssid){
// capture the SSID for the button action
final String filterSSID = ssid;

// build the actual dialog
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getActivity());

builder.setView(view);
builder.setTitle(R.string.title_connection_info);
builder.setIcon(getResources().getDrawable(R.drawable.ic_info_dark_grey_icon));
builder.setPositiveButton(R.string.show_records, (dialog, which) -> {
ArrayList<String> ssids = new ArrayList<>();
ssids.add(filterSSID);
showRecords(filterSSID);
});
builder.setNegativeButton(R.string.close, null);

LogFilter filter = new LogFilter();
filter.setESSIDs(ssids);
return builder;
}

RecordOverviewFragment recordOverviewFragment = new RecordOverviewFragment();
recordOverviewFragment.setFilter(filter);
recordOverviewFragment.setGroupKey("ESSID");
private void showRecords(String filterSSID){
ArrayList<String> ssids = new ArrayList<>();
ssids.add(filterSSID);

MainActivity.getInstance().injectFragment(recordOverviewFragment);
});
builder.setNegativeButton(R.string.close, null);
LogFilter filter = new LogFilter();
filter.setESSIDs(ssids);

return builder.create();
RecordOverviewFragment recordOverviewFragment = new RecordOverviewFragment();
recordOverviewFragment.setFilter(filter);
recordOverviewFragment.setGroupKey("ESSID");
MainActivity.getInstance().injectFragment(recordOverviewFragment);
}

@Override
Expand Down
Expand Up @@ -27,7 +27,6 @@ public class PreferenceHostageFragment extends PreferenceFragment implements Sha
*/
private HashSet<String> mPrefValuePreviewSet;
MultiStageAlarm alarm = new MultiStageAlarm();

/**
* {@inheritDoc}
*/
Expand All @@ -38,8 +37,7 @@ public void onCreate(Bundle savedInstanceState){
// these preferences are all text preferences
final String[] textPreferences = new String[]{
"pref_external_location",
"pref_upload_server",
"pref_download_server",
"pref_hpfeeds_server",
"pref_max_connections",
"pref_timeout",
"pref_sleeptime",
Expand All @@ -50,7 +48,7 @@ public void onCreate(Bundle savedInstanceState){

mPrefValuePreviewSet = new HashSet<>();
mPrefValuePreviewSet.add("pref_external_location");
mPrefValuePreviewSet.add("pref_upload_server");
mPrefValuePreviewSet.add("pref_hpfeeds_server");

addPreferencesFromResource(R.xml.settings_preferences);

Expand Down Expand Up @@ -110,22 +108,42 @@ public void onDestroy() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
updatePreferenceSummary(key);
CheckBoxPreference checkboxPref = (CheckBoxPreference)getPreferenceManager().findPreference("pref_multistage");
CheckBoxPreference checkboxPrefMultiStage = (CheckBoxPreference)getPreferenceManager().findPreference("pref_multistage");
CheckBoxPreference checkBoxPreferenceHpfeeds = (CheckBoxPreference)getPreferenceManager().findPreference("pref_hpfeeds_server");

if(checkboxPrefMultiStage != null)
checkMultistage(checkboxPrefMultiStage);
if(checkBoxPreferenceHpfeeds !=null)
checkHpfeeds(checkBoxPreferenceHpfeeds,sharedPreferences);
}

assert checkboxPref != null;
checkboxPref.setOnPreferenceChangeListener((preference, newValue) -> {
private void checkMultistage(CheckBoxPreference checkboxPrefMultiStage){
checkboxPrefMultiStage.setOnPreferenceChangeListener(((preference, newValue) -> {
boolean myValue = (Boolean) newValue;

if (myValue) {
startMultiStage();
}

else {
stopMultiStage();
}
return true;
});
}));

}

private void checkHpfeeds(CheckBoxPreference checkBoxPreferenceHpfeeds,SharedPreferences sharedPreferences){
checkBoxPreferenceHpfeeds.setOnPreferenceChangeListener((preference, o) -> {
boolean myValue = (Boolean) o;

if (myValue) {
sharedPreferences.edit().putBoolean("pref_hpfeeds_server", true).apply();

} else {
sharedPreferences.edit().putBoolean("pref_hpfeeds_server", false).apply();
}
return true;
});
}

public void stopMultiStage() {
Expand Down
24 changes: 24 additions & 0 deletions src/main/res/values/hpfeeds.xml
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hpfeeds_host" translatable="false">192.168.1.3</string>
<integer name="hpfeeds_port" translatable="false">20000</integer>
<string name="hpfeeds_ident" translatable="false">testing</string>
<string name="hpfeeds_secret" translatable="false">secretkey</string>
<string name="hpfeeds_channel" translatable="false">chan2</string>
<string name="hpfeeds_enabled" translatable="false">enabled</string>
<string name="advanced_hpfeeds_settings" translatable="false">HpFeeds Broker Settings</string>
<string name="pref_upload_hpfeeds" translatable="false">Enable records uploading in HpFeeds</string>
<string name="pref_hpfeeds_settings_tile" translatable="false">HpFeeds Broker Settings</string>
<string name="pref_hpfeeds_connection_settings" translatable="false">Upload Settings</string>
<string name="pref_host_title" translatable="false">HpFeeds Broker Host</string>
<string name="pref_port_title" translatable="false">HpFeeds Broker Port</string>
<string name="pref_ident_title" translatable="false">HpFeeds Broker ident</string>
<string name="pref_secret_title" translatable="false">HpFeeds Broker secret</string>
<string name="pref_channel_title" translatable="false">HpFeeds Broker secret</string>
<string name="pref_host_summary" translatable="false">The host where the hpfeeds broker listens to</string>
<string name="pref_port_summary" translatable="false">The port where the hpfeeds broker listens to</string>
<string name="pref_ident_summary" translatable="false">The identification name of the user</string>
<string name="pref_secret_summary" translatable="false">The secret key or password of the user</string>
<string name="pref_channel_summary" translatable="false">The channel or channels where the records are published (e.g.: chan1,chan2)</string>

</resources>
2 changes: 1 addition & 1 deletion src/main/res/values/strings_preferences.xml
Expand Up @@ -13,7 +13,7 @@
<string name="pref_notification">Notification</string>
<string name="pref_vibration">Vibration</string>
<string name="pref_vibration_summ">Enable Vibration</string>
<string name="pref_upload">Online Database</string>
<string name="pref_upload">HpFeeds</string>
<string name="pref_upload_server">Server Address</string>
<string name="pref_connection_settings">Connection Settings</string>
<string name="pref_max_connections">Max Connections</string>
Expand Down
95 changes: 67 additions & 28 deletions src/main/res/xml/settings_preferences.xml
Expand Up @@ -37,63 +37,102 @@
</PreferenceCategory>

<PreferenceCategory android:title="@string/pref_upload" >
<!--<CheckBoxPreference

<CheckBoxPreference
android:key="pref_hpfeeds_server"
android:defaultValue="false"
android:key="pref_auto_synchronize"
android:summary="@string/pref_auto_synchronize_summ"
android:title="@string/pref_auto_synchronize_title" />-->
android:title="@string/pref_upload_hpfeeds" />

<EditTextPreference
android:key="pref_upload_server"
android:defaultValue="https://www.tracingmonitor.org"
android:title="@string/pref_upload_server" />

<EditTextPreference
android:key="pref_sync_frequency"
android:defaultValue="5"
android:title="@string/pref_sync_frequency_title"
android:summary="@string/pref_sync_frequency_summary"
android:inputType="number"
android:numeric="decimal" />
<PreferenceScreen
android:key="pref_hpfeeds_settings"
android:title="@string/advanced_hpfeeds_settings"
android:persistent="false">

<PreferenceCategory android:title="@string/pref_hpfeeds_connection_settings" >
<EditTextPreference
android:inputType="text"
android:key="pref_host_hpfeeds"
android:defaultValue="@string/hpfeeds_host"
android:title="@string/pref_host_title"
android:summary="@string/pref_host_summary" />

<EditTextPreference
android:inputType="number"
android:key="pref_port_hpfeeds"
android:defaultValue="@integer/hpfeeds_port"
android:title="@string/pref_port_title"
android:summary="@string/pref_port_summary" />

<EditTextPreference
android:inputType="text"
android:key="pref_ident_hpfeeds"
android:defaultValue="@string/hpfeeds_ident"
android:title="@string/pref_ident_title"
android:summary="@string/pref_ident_summary" />

<EditTextPreference
android:inputType="text"
android:key="pref_secret_hpfeeds"
android:defaultValue="@string/hpfeeds_secret"
android:title="@string/pref_secret_title"
android:summary="@string/pref_secret_summary" />

<EditTextPreference
android:inputType="text"
android:key="pref_secret_channel"
android:defaultValue="@string/hpfeeds_channel"
android:title="@string/pref_channel_title"
android:summary="@string/pref_channel_summary" />

</PreferenceCategory>
</PreferenceScreen>

<!-- Tracing Upload Disabled-->
<!--<CheckBoxPreference
android:defaultValue="false"
android:key="pref_auto_synchronize"
android:summary="@string/pref_auto_synchronize_summ"
android:title="@string/pref_auto_synchronize_title" />-->

<!-- <EditTextPreference-->
<!-- android:key="pref_upload_server"-->
<!-- android:defaultValue="https://www.tracingmonitor.org"-->
<!-- android:title="@string/pref_upload_server" />-->
<!-- <EditTextPreference-->
<!-- android:key="pref_sync_frequency"-->
<!-- android:defaultValue="5"-->
<!-- android:title="@string/pref_sync_frequency_title"-->
<!-- android:summary="@string/pref_sync_frequency_summary"-->
<!-- android:inputType="number"-->
<!-- android:numeric="decimal" />-->
<!--<EditTextPreference
android:key="pref_download_server"
android:defaultValue="http://ssi.cased.de/api"
android:title="@string/pref_download_server" />-->
</PreferenceCategory>

<PreferenceCategory android:title="@string/advanced_settings">
<PreferenceCategory android:title="Settings">
<PreferenceScreen
android:key="pref_advanced settings"
android:title="@string/advanced_settings"
android:persistent="false">
<PreferenceCategory android:title="@string/pref_connection_settings" >
<EditTextPreference
android:inputType="number"
android:numeric="decimal"
android:key="pref_max_connections"
android:defaultValue="@integer/pref_max_connections_default"
android:title="@string/pref_max_connections"
android:summary="@string/pref_max_connections_summary" />

<EditTextPreference
android:inputType="number"
android:numeric="decimal"
android:key="pref_timeout"
android:defaultValue="@integer/pref_timeout_default"
android:title="@string/pref_timeout"
android:summary="@string/pref_timeout_summary" />

<!--<EditTextPreference
android:inputType="number"
android:numeric="decimal"
android:key="pref_sleeptime"
android:defaultValue="@integer/pref_sleeptime_default"
android:title="@string/pref_sleeptime"
android:summary="@string/pref_sleeptime_summary" />-->

<EditTextPreference
android:inputType="number"
android:numeric="decimal"
android:key="pref_portscan_timeout"
android:defaultValue="@integer/pref_portscan_timeout_default"
android:title="@string/pref_portscan_timeout"
Expand Down

0 comments on commit 2a7a11e

Please sign in to comment.