news
06.10.04: Bugfix for the MacOS part. Now uses the builtin airport executable, which prints scrambled BSSIDs in the current version. Bugreport was sent.
05.02.03: Launched this Website. Now all you maniacs can read and tell about Argus.
01.02.03: Some small Bugfixes. These were neccessary..
30.01.03: Now the MAC of the Gateway is published if no wireless AP could not be found.
download
Requirements: A *nix compatible operating system that supports commands like 'uname' and 'ifconfig'. Hint: Windows is not supported.
Current Version of Argus Client: ArgusC.pl [Linux,FreeBSD,MacOSX]
about
Argus is a system that tracks the location of his users on their own demand. It saves information like "Alice is at Bob's house" or "Bob is in Bob's bedroom".
The user is offered to set his location manually to a string (Interface) or let it update automatically according to the MAC adress of either the currently used wireless access point or the default gateway. The update process is implemented as a very simple protocol based on TCP sockets, on that score Argus can be used globaly via Internet.
The whole software is written in Perl because it suites fast development, fast bug fixing and performance during design and development.
/=== Argus CGI ====\
/==Database=========\ I Full Interface I
I ==================I I Through HTTP/CGI I
I | Location Table |I \==================/
I ------------------I
I | By Table |I Hash Tie /=== Argus Bot ====\
I ------------------I <<=============>> I Full Interface I
I | Time Table |I I Through IRC/Silc I
I ==================I \==================/
I | Alias Table |I
I ------------------I /==================\
\===================/ I Argus Deamon I
\==================/
TCP Port 1984 ^
|
|
|
Submit nick/location pair |
/==============\
I Argus Client I
\==============/
people
Author: Niklas Hofer
Name Idea: Gregor Kopf
interface
Argus Deamon
- default executable name: ArgusD.pl
- listens on port 1984, thus port 1984 must be accessible for external clients, please consult your admin for proper firewall settings
- internals: the deamon ties some hashes to the Databases whenever it has to update them and unties instantly after all settings are performed
Argus Client
- default executable: ArgusC.pl
- at first, the Client tries to deterine your location in the following order:
- if your wireless network device is up, it tries to get the MAC adress of the current access point
- if above fails, the default IPv4 router (gateway) is searched and looked up in the ARP database.
- if this fails, too, you are not online or using a dialup connection. I (Niklas) don't know any semi elegant way to get your location in this case. If you've got an idea - let me know :)
- connects to the Argus Deamon specified in the top of the file. A nick can be specified and shall be, if you don't want to be named Saddam Claws. Additionally, the client can be run in deamon mode, updating your location repetitively. The time interval between to updates can be specified, too.
- run the Client with -h or --help to see all the avaible options.
For determining all the data, external binaries are called like 'ifconfig' or 'netstat' and several tools for accessing the wireless interface. These behave very differently on every operatiing system, so ugly parsing has to be used. I chose this method, because I didn't want to make any syscalls out of Perl (which may differ from OS to OS, too), neither I want to require/supply any additional Perl Packages. So for every OS the output parsing has to be implemented defferently. If your favourite operating system is not supported yet, please find out a way the get the data mentioned above and supply them to me.
Argus Web Interface
all actions shall be accessible by a web interface
- alias definition/list/edit
- users list/update
- don't ask me - tell me!
database
Currently the Database is realized by GDBM Files which are tied to Perl Hashes.
Pro: very easy to access and to use
Contra: Bad performance if extensively used.
May be replaced / completed by a relational database system like PostgreSQL or MySQL, but this may be overkill :-) - We will see.
Location Table
Columns: nick , location
Saves the current <location> of the individuum accociated with <nick>.
This can be a simple string like 'at home' or something completly other, ie a MAC adress like submitted by the Argus Client. (see [Alias Table] and [Argus Client] for more information about that)
By Table
Columns: nick, by
Saves the source of the location information. This can be a nickname in the chat or an IP if the Argus Client. There will be more to come, dependend on future update methods.
Time Table
Columns: nick, time
Saves the time stamp of the last location update for <nick>.
Alias Table
Columns: key, alias
Disposes an alias system. For example, if the [Argus Client] submitted a MAC Adress (ie AF:FE:13:37:23:42) which belongs actually your firm's router, nobody wants to know this crude number. So You can set an Alias 'AF:FE:13:37:23:42' => 'in the Basement of the only big building on Alcatraz' to make it more human readable.