Ανδρέας Οικονομάκης sdi0800272
Δημήτρης Σαντοριναίος sdi0800282
-
Αρχείο
MainActivity
: Είναι το πρώτο Activity που εκτελείται, δημιουργεί την Cache, ελέγχει αν υπάρχει σύνδεση στο διαδίκτυο, αν υπάρχει επικοινωνία με τον server, και αναλαβμάνει την διαδικασία Login. Επίσης δημιουργεί τοSharedPreferences
xml και αποθηκεύει το username, το password και την Ip που έδωσε ο χρήστης. Σε περίπτωση που ο χρήστης κάνειlogout
το username και το password διαγράφονται. Σε περίπτωση εισαγωγής λανθασμένων στοιχείων εμφανίζεται κατάλληλο μήνυμα. Εάν ο χρήστης δεν έχει λογαριασμό, πατώντας το κουμπίREGISTER NOW
δημιουργείται τοRegisterActivity
και ο χρήστης μεταφέρεται εκεί. ΣτοAction Bar
τηςMainActivity
, υπάρχει μενού με επιλογές Configure Ip και Turn Off. Πατώντας Configure Ip ο χρήστης μεταφέρεται στοConfigureIpFragment
, ενώ πατώντας Turn Off ή τοAndroid Back Button
η εφαρμογή τερματίζει. -
Αρχείο
LoggedinActivity
: Δημιουργείται από τοMainActivity
με την επιτυχή εισαγωγή στοιχείων του χρήστη. Ο χρήστης μπορεί να επιλέξει ανάμεσα σταfragments
που αναφέρονται παρακάτω. Η λίστα που περιέχει ταfragments
ανοίγει/κλείνει με δύο τρόπους, ο πρώτος είναι πατώντας το σύμβολο λίστας-μενού αριστερά στοAction Bar
, ενώ ο δεύτερος είναι σέρνοντας το δάκτυλο απο τα αριστερά της οθόνης προς τα δεξιά (swipe right gesture
). Στα δεξιά στοAction Bar
υπάρχει το σύμβολο των ρυθμίσεων. Πατώντας στις ρυθμίσεις ο χρήστης έχει δύο επιλογές, είτε να κλείσει την εφαρμογή είτε να κάνειlogout
. Πατώντας τοAndroid Back Button
εμφανίζεται μήνυμα που ενημερώνει τον χρήστης αν θέλει να τερματίσει την εφαρμογή. Πατώνταςναι
η εφαρμογή τερματίζει, ενώ στοόχι
συνεχίζει να λειτουργεί. -
Αρχείο
RegisterActivity
: Δημιουργείται από τοMainActivity
με το πάτημα του κουμπιούREGISTER NOW
. Ο χρήστης μεταφέρεται σε μια οθόνη όπου του ζητείται να εισάγει το username και password. Σε περίπτωση που αφήσει κενό κάποιο πεδίο εμφανίζεται αντίστοιχο μήνυμα. Σε περίπτωση που το username που συμπληρώσει υπάρχει ήδη στον server ενημερώνεται με αντίστοιχο μήνυμα. Εάν τα στοιχεία που συμπληρώσει είναι ορθά, ενημερώνεται η βάση του server και ο χρήστης επιστρέφει στην αρχική οθόνη. Αφού βάλει τα στοιχεία του και πατήσει το κουμπίLOGIN
εμφανίζεται στον server και ο χρήστης περιμένει εάν ο server τον αποδεχτεί ή τον απορρίψει, όπου ενημερώνεται με το αντίστοιχο μήνυμα.
-
Αρχείο
Cache
: Είναι ένα αντικείμενο που περιγράφει τον Client. Περιέχει το αναγνωριστικό κάθε clientString client_id
, έναν ακέραιο που δείχνει την τρέχουσα κατάστασηint status
1 σημαίνει οτι ο Client είναι online , 0 σημαίνει οτι είναι offline. Το πεδίοint confirmed
δηλώνει εάν τον έχει αποδεχτεί ο server (έχει την τιμή 1 ) ή εαν τον έχει απορρίψει (τιμή 0 ). Το πεδίοint checked
χρησιμοποιήθηκε ώστε να υπάρχει η πληροφορία ποιους Clients επέλεξε ο χρήστης μέσω τωνCheckedTextView
για να εκτελέσει την αντίστοιχη λειτουργία (π.χ. Turn off clients , Send Jobs to Clients , Delete Periodic Job ). Το πεδίοArrayList<Job> jobs_running_on_client
είναι μια λίστα που περιέχει αναλυτικά όλες τις δουλειές που τρέχει ο συγκεκριμένος Client. Τέλος το πεδίοΑrrayList<Result> results
είναι μια λίστα που περιέχει όλα τα αποτελέσματα που έχουν έρθει από τον συγκεκριμένο Client. Για κάθε πεδίο υπάρχουν οι αντίστοιχες συναρτήσεις set-get. Η τελική Cache που αντιπροσωπεύει το σύνολο των clients είναι μιαArrayList<Cache>
που δημιουργείται στην MainActivity. -
Αρχείο
CacheQueries
: ΑΝΤΡΕΑ ΒΡΩΜΙΑΡΗ ΣΥΜΠΛΗΡΩΝΕ -
Αρχείο
Job
: Είναι ένα αντικείμενο που περιγράφει τις διεργασίες nmap που θα εισαχθούν σε κάποιον Client. Περιέχει ένα αναγνωριστικόint job_id
μοναδικό για κάθε job, ένα πεδίοString parameters
όπου αποθηκεύονται οι παράμετροι του nmap , ένα πεδίοint periodic
το οποίο περιγράφει εάν η συγκεκριμένη δουλειά είναι περιοδική ( έχει τιμή 1 ) ή όχι (τιμή 0 ), τέλος το πεδίοint time_periodic
αποθηκεύει τον χρόνο στον οποίο θα εκτελείται περιοδικά η εντολή ( 0 αν δεν είναι περιοδική). Για κάθε πεδίο υπάρχουν οι αντίστοιχες συναρτήσεις set-get. Στην MainActivity δημιουργείται μιαArrayList<Job>
που περιέχει όσες δουλειές υπάρχουν στον server αλλά και τις δουλειές που μπορεί να εισάγει ή να αφαιρέσει ο χρήστης από το Android device. -
Αρχείο
Result
: Είναι ένα αντικείμενο που περιγράφει ένα αποτέλεσμα που φτάνει στο Android από κάποιον Client. Κάθε Client δηλαδή κάθεCache
έχει μιαArrayList<Result>
στην οποία αποθηκεύονται όλα τα αποτελέσματά του. ΤοResult
έχει τα εξής πεδία :String jobID
: Το id από την εντολή που προέρχεται αυτό το αποτέλεσμα.String ip_scanned
: Η IP που σκάναρε το nmap.String host
: Το όνομα του server που σκαναρίστηκε.ArrayList<String> ports
: Λίστα από ports που βρέθηκαν.ArrayList<String> states
: Λίστα με τις καταστάσεις των ports (open , closed).ArrayList<String> services
: Λίστα με τα service για κάθε port (http, ftp , ssh , mysql κλπ).
PendingClients table :
idClient | accept |
------------- | :----: | 999999999999 | 1 | 888888888888 | 0 |
TurnOffClients table :
idClient |
------------- | 999999999999 | 888888888888 |
DeletePeriodicJobs table :
idClient | idJob |
------------- | :---: | 999999999999 | 1 | 888888888888 | 2 |
InsertJobs table :
idClient | idJob | parameters | periodic | time_periodic |
------------- | :-----: | :------------------: | :------: | :-----------: | 999999999999 | 1 | -oX - www.google.com | 1 | 30 | 888888888888 | 2 | -oX - www.in.gr | 0 | 0 |
- Αρχείο
DbConnector
: Περιέχει όλες τις μεθόδους που αναλαμβάνουν την επικοινωνία με την βάση. Ο constructor ελέγχει αν υπάρχει η βάση μέσω τουDbCreation
constructor. Πριν καλεστεί κάποια μέθοδος πρέπει να χρησιμοποιηθεί η μέθοδοςopen()
και στο τέλος ηclose()
, η πρώτη ανοίγει και διαβάζει και η δεύτερη κλείνει την βάση που χρησιμοποιεί το πρόγραμμα αντίστοιχα. - Αρχείο
DbCreation
: Δημιουργείται από τον constructor τουDbConnector
. Εάν η βάση δεδομένων δεν υπάρχει, δημιουργείται. Η βάση αποτελείται απο τέσσερα tables:- PendingClients, έχει δύο πεδία
idClient VARCHAR
καιaccept INT
. Κάθε εγγραφή στο table δηλώνει μια ενέργεια του χρήστη. - DeletePeriodicJobs, έχει δύο πεδία
idClient VARCHAR
καιidJob INT
. Κάθε εγγραφή στο table δηλώνει μια ενέργεια του χρήστη. - InsertJobs, έχει πέντε πεδία
idClient VARCHAR
,idJob INT
,parameters VARCHAR
,periodic INT
,time_periodic INT
. Κάθε εγγραφή στο table δηλώνει μια ενέργεια του χρήστη. - TurnOffClients, έχει ένα πεδίο
idClient VARCHAR
. Προφανώς κάθε εγγραφή αφορά κάποιον client που πρέπει να τερματιστεί.
- PendingClients, έχει δύο πεδία
- Αρχείο
DbObject
: Είναι το αντικείμενο που επιστρέφουν τα ερωτήματα στην βάση. Για την ακρίβεια τα ερωτήματα-μέθοδοι από το αρχείοDbConnector
της μορφήςDatabase_Get_*
επιστρέφουνArrayList<DbObject>
. Έχει τέσσερα πεδία :String Client_id
: Το ID του Client.int job_id
: To ID της εντολής nmap.int accept
: Το accept δείχνει εάν ο χρήστης αποδέχτηκε ή απέρριψε κάποιον Client όσο η εφαρμογή βρισκόταν σε κατάσταση χωρίς connection.Job job
: To αντικείμενο Job κρατά τις πληροφορίες που χρειάζονται ώστε οταν ο χρήστης στείλει δουλειές σε Clients, σε κατάσταση χωρίς connection, μόλις αποκατασταθεί το πρόβλημα της σύνδεσης θα σταλθούν οι δουλειές κατευθείαν (διαφορετικά θα κρατούσαμε μόνο το id τoυ εκάστοτε job και θα ρωτούσαμε στην cache σε ποιό job αντιστοιχεί για να πάρουμε τα πεδία που χρειαζόμαστε )
- Αρχείο
ClientResultsFragment
: - Αρχείο
ConfigureIpFragment
: - Αρχείο
DeletePeriodicJobFragment
: - Αρχείο
InsertJobsFragment
: - Αρχείο
StatusFragment
: - Αρχείο
TotalResultsFragment
: - Αρχείο
TurnOffClientFragment
: - Αρχείο
TypeNewJobFragment
:
- Αρχείο
DatabaseInteraction
: - Αρχείο
JsonParsers
: - Αρχείο
LogginListener
: - Αρχείο
ServerInteraction
: - Αρχείο
updateListener
: