append
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 217
SimpleCDB 1.0
SimpleCDB - A Perl-only Constant Database. more>>
SimpleCDB - A Perl-only Constant Database.
SYNOPSIS
use SimpleCDB;
# writer
# - tie blocks until DB is available (exclusive), or timeout
tie %h, SimpleCDB, db, O_WRONLY
or die "tie failed: $SimpleCDB::ERRORn";
$h{$k} = $v;
die "store: $SimpleCDB::ERROR" if $SimpleCDB::ERROR;
untie %h; # release DB (exclusive) lock
# reader
# - tie blocks until DB is available (shared), or timeout
tie %h, SimpleCDB, db, O_RDONLY
or die "tie failed: $SimpleCDB::ERRORn";
$v = $h{$i};
die "fetch: $SimpleCDB::ERROR" if $SimpleCDB::ERROR;
untie %h; # release DB (shared) lock
This is a simple perl-only DB intended for constant DB applications. A constant DB is one which, once created, is only ever read from (though this implementation allows appending of new data). That is, this is an "append-only DB" - records may only be added and/or extracted.
Course-grained locking provided to allow multiple users, as per flock semantics (i.e. write access requires an exclusive lock, read access needs a shared lock (see notes below re. perl < 5.004)). As (exclusive) updates may be take some time to complete, shared lock attempts will timeout after a defined waiting period (returning $! == EWOULDBLOCK). Concurrent update attempts will behave similarly, but with a longer timeout.
The DB files are simple flat files, with one record per line. Records (both keys and values) may be arbitrary (binary) data. Records are extracted from these files via a plain linear search. Unsurprisingly, this search is a relatively inefficient operation. To improve extraction speed, records are randomly distributed across N files, with the average search space is reduced by 1/N compared to a single file. (See below for some example performance times.) One advantage of this flat file based solution is that the DB is human readable (assuming the data is), and with some care can be edited with a plain ol text editor.
Finally, note that this DB does not support duplicate entries. In practice, the first record found matching a given key is returned, any duplicates will be ignored.
<<lessSYNOPSIS
use SimpleCDB;
# writer
# - tie blocks until DB is available (exclusive), or timeout
tie %h, SimpleCDB, db, O_WRONLY
or die "tie failed: $SimpleCDB::ERRORn";
$h{$k} = $v;
die "store: $SimpleCDB::ERROR" if $SimpleCDB::ERROR;
untie %h; # release DB (exclusive) lock
# reader
# - tie blocks until DB is available (shared), or timeout
tie %h, SimpleCDB, db, O_RDONLY
or die "tie failed: $SimpleCDB::ERRORn";
$v = $h{$i};
die "fetch: $SimpleCDB::ERROR" if $SimpleCDB::ERROR;
untie %h; # release DB (shared) lock
This is a simple perl-only DB intended for constant DB applications. A constant DB is one which, once created, is only ever read from (though this implementation allows appending of new data). That is, this is an "append-only DB" - records may only be added and/or extracted.
Course-grained locking provided to allow multiple users, as per flock semantics (i.e. write access requires an exclusive lock, read access needs a shared lock (see notes below re. perl < 5.004)). As (exclusive) updates may be take some time to complete, shared lock attempts will timeout after a defined waiting period (returning $! == EWOULDBLOCK). Concurrent update attempts will behave similarly, but with a longer timeout.
The DB files are simple flat files, with one record per line. Records (both keys and values) may be arbitrary (binary) data. Records are extracted from these files via a plain linear search. Unsurprisingly, this search is a relatively inefficient operation. To improve extraction speed, records are randomly distributed across N files, with the average search space is reduced by 1/N compared to a single file. (See below for some example performance times.) One advantage of this flat file based solution is that the DB is human readable (assuming the data is), and with some care can be edited with a plain ol text editor.
Finally, note that this DB does not support duplicate entries. In practice, the first record found matching a given key is returned, any duplicates will be ignored.
Download (0.015MB)
Added: 2007-05-14 License: Perl Artistic License Price:
893 downloads
Javascript::Menu 2.02
Javascript::Menu is a NumberedTree that generates HTML and Javascript code for a menu. more>>
Javascript::Menu is a NumberedTree that generates HTML and Javascript code for
a menu.
SYNOPSIS
use Javascript::Menu;
# Give it something to do (example changes the menus caption):
my $action = sub {
my $self = shift;
my ($level, $unique) = @_;
my $value = $self->getValue;
return "getElementById(caption_$unique).innerHTML=$value";
};
# Build the tree:
my $menu = Javascript::Menu->convert(tree => $otherTree, action => $action);
my $menu = Javascript::Menu->readDB(source_name => $table, source => $dbh,
action => $action);
my $menu = Javascript::Menu->new(value => Please select a parrot,
action => $action);
my $blue = $menu->append(value => Norwegian Blue);
$blue->append(value => Pushing up the daisies);
$menu->append(value => A Snail);
# Or maybe you just want a navigational menu?
my $menu = Javascript::Menu->new(value => Please select a prime minister);
$menu->append(value => Ariel Sharon,
URL => www.corruption.org/ariel_sharon.htm);
$menu->append(value => Benjamin Netanyahu,
URL => www.corruption.org/bibi.htm);
$menu->append(value => Shaul Mofaz, URL => www.martial_law.org);
# Print it out as a right-to-left menu:
my $css = $menu->buildCSS($menu->reasonableCSS);
print $cgi->start_html(-script => $menu->baseJS(rtl),
-style => $css); #CSS plays an important role.
print $tree->getHTML;
Javascript::Menu is an object that helps in creating the HTML, Javascript, and some of the CSS required for a table-based menu. There are a few other modules that deal with menus, But as I browsed through them, I found that none of them exactly fitted my needs. So I designed this module, with the following goals in mind:
Flexibility
The main feature of this module is the ability to supply all nodes or any specific node with a subroutine that is activated in time of the code generation to help decide what the item will do when it is clicked. This allows customisation far beyond associating a link with every item. Multy-level selection menus become very easy to do (and this is, in fact, what I needed when I started writing this).
I18n
Working with i18n (internationalization) can be a big headache. Working with Hebrew (or Arabic) forces you not only to change your charachters, but also to change your direction of writing. I incorporated into this module the ability to produce right-to-left menus and tested it using a legacy ASCII-based encoding (iso-8859-8).
Object Hierarchy
I designed the module to work with two other modules of mine, Tree::Numbered and Tree::Numbered::DB, which simplify the task of building the menu and allow for construction of a menu from database information.
The current version adds support for highlighting the item thats hovered over. Youll find that having made some preliminary steps, like tweaking the CSS to look the way you like it to, the rest is fairly easy.
<<lessa menu.
SYNOPSIS
use Javascript::Menu;
# Give it something to do (example changes the menus caption):
my $action = sub {
my $self = shift;
my ($level, $unique) = @_;
my $value = $self->getValue;
return "getElementById(caption_$unique).innerHTML=$value";
};
# Build the tree:
my $menu = Javascript::Menu->convert(tree => $otherTree, action => $action);
my $menu = Javascript::Menu->readDB(source_name => $table, source => $dbh,
action => $action);
my $menu = Javascript::Menu->new(value => Please select a parrot,
action => $action);
my $blue = $menu->append(value => Norwegian Blue);
$blue->append(value => Pushing up the daisies);
$menu->append(value => A Snail);
# Or maybe you just want a navigational menu?
my $menu = Javascript::Menu->new(value => Please select a prime minister);
$menu->append(value => Ariel Sharon,
URL => www.corruption.org/ariel_sharon.htm);
$menu->append(value => Benjamin Netanyahu,
URL => www.corruption.org/bibi.htm);
$menu->append(value => Shaul Mofaz, URL => www.martial_law.org);
# Print it out as a right-to-left menu:
my $css = $menu->buildCSS($menu->reasonableCSS);
print $cgi->start_html(-script => $menu->baseJS(rtl),
-style => $css); #CSS plays an important role.
print $tree->getHTML;
Javascript::Menu is an object that helps in creating the HTML, Javascript, and some of the CSS required for a table-based menu. There are a few other modules that deal with menus, But as I browsed through them, I found that none of them exactly fitted my needs. So I designed this module, with the following goals in mind:
Flexibility
The main feature of this module is the ability to supply all nodes or any specific node with a subroutine that is activated in time of the code generation to help decide what the item will do when it is clicked. This allows customisation far beyond associating a link with every item. Multy-level selection menus become very easy to do (and this is, in fact, what I needed when I started writing this).
I18n
Working with i18n (internationalization) can be a big headache. Working with Hebrew (or Arabic) forces you not only to change your charachters, but also to change your direction of writing. I incorporated into this module the ability to produce right-to-left menus and tested it using a legacy ASCII-based encoding (iso-8859-8).
Object Hierarchy
I designed the module to work with two other modules of mine, Tree::Numbered and Tree::Numbered::DB, which simplify the task of building the menu and allow for construction of a menu from database information.
The current version adds support for highlighting the item thats hovered over. Youll find that having made some preliminary steps, like tweaking the CSS to look the way you like it to, the rest is fairly easy.
Download (0.025MB)
Added: 2006-06-12 License: Perl Artistic License Price:
1235 downloads
FakeIKEd 0.0.4
Fiked is a fake IKE daemon that supports just enough of the standards and Cisco extensions. more>>
Fiked is a fake IKE daemon that supports just enough of the standards and Cisco extensions to attack commonly found insecure Cisco PSK+XAUTH VPN setups in what could be described as a semi-MitM attack.
Basically, knowing the pre-shared key, also known as shared secret or group password, the VPN gateway can be impersonated in IKE phase 1, in order to learn XAUTH user credentials in phase 2.
The configuration supported by fiked is IKE aggressive mode using pre-shared keys and XAUTH. FakeIKEd supports algorithms like DES, 3DES, AES128, AES192, AES256, MD5, SHA1, and DH groups 1, 2, and 5. Main mode is not supported.
Basically, if you know the pre-shared key, also known as shared secret or group password, you can play Man in the Middle, impersonate the VPN gateway in IKE phase 1, and learn XAUTH user credentials in phase 2.
This attack is not new. It has been known for a long time that IKE using PSK with XAUTH is insecure, and this is not the first actual implementation of the attack.
To successfully demostrate an attack on a VPN site, you need to know the shared secret, and you must be able to intercept the IKE traffic between the clients and the VPN gateway.
There are several ways to find out the shared secret, including being a legitimate user, grabbing it from some Cisco config file, using ike-crack, or layer 8 hackery.
There are also several ways to redirect the IKE traffic to your running fiked instance, including ARP spoofing, 802.11 hostap, or layer 1 hackery.
Usage:
Usage: fiked [-rdqhV] -g gateway -k id:psk [-k ...] [-l file] [-L file]
-r use raw socket: forge source address to match < gateway >
-d detach from tty and run as a daemon (implies -q)
-q be quiet, dont write anything to stdout
-h print help and exit
-V print version and exit
-g gw VPN gateway address to impersonate
-k i:k pre-shared key aka. group password, shared secret, prefixed
with its group/key id (first -k sets default)
-l file append results to credential log file
-L file verbous logging to file instead of stdout
Enhancements:
- Bugfixes, portability changes, and support for dropping privileges.
<<lessBasically, knowing the pre-shared key, also known as shared secret or group password, the VPN gateway can be impersonated in IKE phase 1, in order to learn XAUTH user credentials in phase 2.
The configuration supported by fiked is IKE aggressive mode using pre-shared keys and XAUTH. FakeIKEd supports algorithms like DES, 3DES, AES128, AES192, AES256, MD5, SHA1, and DH groups 1, 2, and 5. Main mode is not supported.
Basically, if you know the pre-shared key, also known as shared secret or group password, you can play Man in the Middle, impersonate the VPN gateway in IKE phase 1, and learn XAUTH user credentials in phase 2.
This attack is not new. It has been known for a long time that IKE using PSK with XAUTH is insecure, and this is not the first actual implementation of the attack.
To successfully demostrate an attack on a VPN site, you need to know the shared secret, and you must be able to intercept the IKE traffic between the clients and the VPN gateway.
There are several ways to find out the shared secret, including being a legitimate user, grabbing it from some Cisco config file, using ike-crack, or layer 8 hackery.
There are also several ways to redirect the IKE traffic to your running fiked instance, including ARP spoofing, 802.11 hostap, or layer 1 hackery.
Usage:
Usage: fiked [-rdqhV] -g gateway -k id:psk [-k ...] [-l file] [-L file]
-r use raw socket: forge source address to match < gateway >
-d detach from tty and run as a daemon (implies -q)
-q be quiet, dont write anything to stdout
-h print help and exit
-V print version and exit
-g gw VPN gateway address to impersonate
-k i:k pre-shared key aka. group password, shared secret, prefixed
with its group/key id (first -k sets default)
-l file append results to credential log file
-L file verbous logging to file instead of stdout
Enhancements:
- Bugfixes, portability changes, and support for dropping privileges.
Download (0.10MB)
Added: 2005-12-21 License: BSD License Price:
1402 downloads
rPath Appliance Agent 1.0.10
rPath Appliance Agent project is an extensible application framework for the administration of appliance devices. more>>
rPath Appliance Agent project is an extensible application framework for the administration of appliance devices through a web-based user interface.
The framework is comprised of individual component plugins which offer specialized functionality, such as a message log interface, user account preferences, system updates, and entitlement management capabilities.
You can also develop and add plugins to the rAA framework, extending capabilities and functionality for your specific requirements.
To set up your environment for developing rAA, untar the devel.tar.bz2 tarball in the docs directory into your development directory. It should contain the following files:
- README.devel:
this file.
- dev.cfg:
configuration for the development environment.
- raa:
symbolic link to the rAA installation, usually
/usr/lib/python2.4/site-packages/raa.
- raa-service:
used by the startup script for the rAA service daemon.
- raa_service_dev.conf:
configuration file for the rAA service daemon. This contains a pluginDirs
configuration option. Change or append to its value to add additional
directories in which you are developing plugins.
- raa-web:
startup script for the rAA web layer.
- start-raa-service.sh:
startup script for the rAA service daemon.
Enhancements:
- Enhancements to the backup plugin, and a new plugin has been added to allow users to upload new SSL certificates for rAAs Web servers HTTPS connections.
<<lessThe framework is comprised of individual component plugins which offer specialized functionality, such as a message log interface, user account preferences, system updates, and entitlement management capabilities.
You can also develop and add plugins to the rAA framework, extending capabilities and functionality for your specific requirements.
To set up your environment for developing rAA, untar the devel.tar.bz2 tarball in the docs directory into your development directory. It should contain the following files:
- README.devel:
this file.
- dev.cfg:
configuration for the development environment.
- raa:
symbolic link to the rAA installation, usually
/usr/lib/python2.4/site-packages/raa.
- raa-service:
used by the startup script for the rAA service daemon.
- raa_service_dev.conf:
configuration file for the rAA service daemon. This contains a pluginDirs
configuration option. Change or append to its value to add additional
directories in which you are developing plugins.
- raa-web:
startup script for the rAA web layer.
- start-raa-service.sh:
startup script for the rAA service daemon.
Enhancements:
- Enhancements to the backup plugin, and a new plugin has been added to allow users to upload new SSL certificates for rAAs Web servers HTTPS connections.
Download (0.097MB)
Added: 2006-12-21 License: GPL (GNU General Public License) Price:
1040 downloads
cPige 1.5
cPige is a tool for webradios that want to backup their stream on a 1 day period. more>>
cPige is a tool for webradios that want to backup their stream on a 1 day period. cPige is listening to an icecast/shoutcast webradio, and write the stream using 2 different methods: Artist - Title.mp3, or in Pige mode, cPige write files like 0.mp3 1.mp3 .. corresponding to the current hour. Each mp3 should be 60 min long. Existing files are overwriten. So you can keep 1 day streaming 24/7.
Usage:
./cpige -h http://stream-hautdebit.frequence3.net:8000/ -h http://fallback.stream:8000/fallback -d .
-h host to connect to.
-V show cpige Version.
-d directory save stream to this directory.
-P Pige mode (takes no argument), save stream by hour.
-M Use pige Meta: will write id3v1 tag (only usefull with pige mode).
-q Quite mode, does not output stream status.
-b Background mode (UNIX only) use cPige as a daemon.
-l Path to logfile.
-I [h|m] pige mode will cut on a hour by hour basis or min by min basis.
-i nb how many "nb" hour(s) or minute(s) we should wait before cutting.
-n cPige will append xxxx to file in non pige mode, where xxxx is a number.
-h is the stream URL (not a .m3u or .pls playlist).
-d select where data should be written.
-P Pige mode, keeps 24h of data, by 1h segment, overwriting existing files.
-b Background mode. (UNIX only)
-l path to the logfile.
-q Quiet mode, does not output stream status on stdout
-M Use pige Meta: will write id3v1 tag (only usefull with pige mode)
-I [h|m] pige mode will cut on a hour by hour basis or min by min basis.
-i nb how many "nb" hour(s) or minute(s) we should wait before cutting.
Practical example:
If you have a stream url like http://stream-hautdebit.frequence3.net:8000/ you can use this command line:
./cpige -h http://stream-hautdebit.frequence3.net:8000/ -d /where/to/store/data [ -P ] [ -b ] [ -l cpige.log ]
Parameters in brackets are OPTIONAL. Brackets should not be given to the command line.
Enhancements:
- A Gtk2 GUI was added.
- Metaint changes during reconnections are correctly handled.
- Non-printable characterss are no longer used in filenames created in non pige mode.
- Directly starts recording without waiting for a new interval.
- A memory leak has been fixed.
- A potential bug in getHeaders() has been fixed.
- The ability to stop cPige after a certain amount of time has been added.
- NULL strings are not printed.
- There are some fixes for the Win32 platform.
<<lessUsage:
./cpige -h http://stream-hautdebit.frequence3.net:8000/ -h http://fallback.stream:8000/fallback -d .
-h host to connect to.
-V show cpige Version.
-d directory save stream to this directory.
-P Pige mode (takes no argument), save stream by hour.
-M Use pige Meta: will write id3v1 tag (only usefull with pige mode).
-q Quite mode, does not output stream status.
-b Background mode (UNIX only) use cPige as a daemon.
-l Path to logfile.
-I [h|m] pige mode will cut on a hour by hour basis or min by min basis.
-i nb how many "nb" hour(s) or minute(s) we should wait before cutting.
-n cPige will append xxxx to file in non pige mode, where xxxx is a number.
-h is the stream URL (not a .m3u or .pls playlist).
-d select where data should be written.
-P Pige mode, keeps 24h of data, by 1h segment, overwriting existing files.
-b Background mode. (UNIX only)
-l path to the logfile.
-q Quiet mode, does not output stream status on stdout
-M Use pige Meta: will write id3v1 tag (only usefull with pige mode)
-I [h|m] pige mode will cut on a hour by hour basis or min by min basis.
-i nb how many "nb" hour(s) or minute(s) we should wait before cutting.
Practical example:
If you have a stream url like http://stream-hautdebit.frequence3.net:8000/ you can use this command line:
./cpige -h http://stream-hautdebit.frequence3.net:8000/ -d /where/to/store/data [ -P ] [ -b ] [ -l cpige.log ]
Parameters in brackets are OPTIONAL. Brackets should not be given to the command line.
Enhancements:
- A Gtk2 GUI was added.
- Metaint changes during reconnections are correctly handled.
- Non-printable characterss are no longer used in filenames created in non pige mode.
- Directly starts recording without waiting for a new interval.
- A memory leak has been fixed.
- A potential bug in getHeaders() has been fixed.
- The ability to stop cPige after a certain amount of time has been added.
- NULL strings are not printed.
- There are some fixes for the Win32 platform.
Download (0.19MB)
Added: 2006-08-20 License: GPL (GNU General Public License) Price:
1160 downloads
AFD 1.3.5
AFD is a program to automatically distribute files either locally or to remote hosts. more>>
AFD comes from Automatic File Distributor and provides a framework for very flexible, non-stop, log and debug-able delivery of an arbitrary amount of files to multiple recipients as expressed in URLs (currently mailing and ftp supported with the mailto://user@domain and ftp://user:password@host URL conventions). AFD stands for Automatic File Distributor.
The most common technique used to distribute data is for each individual to fetch the data from one common place. This place can be a database, FTP-server or even the WWW (World Wide Web). However, this is not always the most user or customer friendly way for a company or organization to distribute its products. For this reason AFD (Automatic File Distributor) was developed, to provide a better service to users or customers in transporting the required data directly to the location where it is required.
When distributing files to a remote host it does so via the FTP or SMTP protocol. Local distribution is done by simply copying files from one directory to another. To distribute files, the AFD has one central configuration file (DIR_CONFIG), where the system administrator can specify which files are to be distributed and where they are to be sent.
Main features:
- The AFD can send/retrieve any type of file, regardless of contents and the name of the file.
- Only the files are being distributed, no other additional information is send with the file.
- The AFD has a very sophisticated and compact X11 interface to monitor and control the distribution of files (afd_ctrl). It has the ability to do extensive logging of all activities, even down to tracing each individual FTP/SMTP command.
- Files can be send to places where no AFD is installed.
- There can be more than one process distributing files to a single host. This has the advantage that when a large file is currently being distributed, other files dont have to wait until the large file is done.
- Where net capacity is limited, it is possible to distribute files with priority.
- If the transfer gets interrupted, AFD can append files. So data that has already been transmitted will not be send again.
- It is possible to setup a whole network of AFDs that can be monitored and controlled through a single interface (mon_ctrl).
Version restrictions:
- The AFD requires X11R5 and Motif 1.2.x (or higher).
Enhancements:
- Files that have been distributed or are to be distributed can now be viewed via show_olog and show_queue dialog.
- A new interface for acknowledging errors was added.
- All events are logged into a separate log file.
- The pattern matching function was enhanced so that it can also handle [] brackets.
- More syntax checks were added for options in DIR_CONFIG.
<<lessThe most common technique used to distribute data is for each individual to fetch the data from one common place. This place can be a database, FTP-server or even the WWW (World Wide Web). However, this is not always the most user or customer friendly way for a company or organization to distribute its products. For this reason AFD (Automatic File Distributor) was developed, to provide a better service to users or customers in transporting the required data directly to the location where it is required.
When distributing files to a remote host it does so via the FTP or SMTP protocol. Local distribution is done by simply copying files from one directory to another. To distribute files, the AFD has one central configuration file (DIR_CONFIG), where the system administrator can specify which files are to be distributed and where they are to be sent.
Main features:
- The AFD can send/retrieve any type of file, regardless of contents and the name of the file.
- Only the files are being distributed, no other additional information is send with the file.
- The AFD has a very sophisticated and compact X11 interface to monitor and control the distribution of files (afd_ctrl). It has the ability to do extensive logging of all activities, even down to tracing each individual FTP/SMTP command.
- Files can be send to places where no AFD is installed.
- There can be more than one process distributing files to a single host. This has the advantage that when a large file is currently being distributed, other files dont have to wait until the large file is done.
- Where net capacity is limited, it is possible to distribute files with priority.
- If the transfer gets interrupted, AFD can append files. So data that has already been transmitted will not be send again.
- It is possible to setup a whole network of AFDs that can be monitored and controlled through a single interface (mon_ctrl).
Version restrictions:
- The AFD requires X11R5 and Motif 1.2.x (or higher).
Enhancements:
- Files that have been distributed or are to be distributed can now be viewed via show_olog and show_queue dialog.
- A new interface for acknowledging errors was added.
- All events are logged into a separate log file.
- The pattern matching function was enhanced so that it can also handle [] brackets.
- More syntax checks were added for options in DIR_CONFIG.
Download (1.1MB)
Added: 2007-07-26 License: GPL (GNU General Public License) Price:
822 downloads
Libqrencode 1.0.2
Libqrencode is a C library for encoding data in a QR Code symbol. more>>
Libqrencode is a C library for encoding data in a QR Code symbol, a kind of 2D symbology that can be scanned by handy terminals such as a mobile phone with CCD. The capacity of QR Code is up to 7000 digits or 4000 characters, and is highly robustness.
Libqrencode supports QR Code model 2, described in JIS (Japanese Industrial Standards) X0510:2004 or ISO/IEC 18004. Currently the following features are not supported:
- ECI and FNC1 mode
- Structured Append Feature
- Micro QR Code
- QR Code model 1
<<lessLibqrencode supports QR Code model 2, described in JIS (Japanese Industrial Standards) X0510:2004 or ISO/IEC 18004. Currently the following features are not supported:
- ECI and FNC1 mode
- Structured Append Feature
- Micro QR Code
- QR Code model 1
Download (0.34MB)
Added: 2007-03-25 License: LGPL (GNU Lesser General Public License) Price:
949 downloads
afbackup 3.5.1pl1
afbackup is a client-server backup system allowing many workstations to backup to a central server (simultaneously or serially) more>>
afbackup project is a client-server backup system offering several workstations a centralized backup to special backup servers.
The backup on the clients can be started automatically using cron-jobs on the clients, but the more intelligent solution is to start it remotely from a central administrative host. To be independent of tricks like rsh, rcp and so on, that are in fact security holes, this remote start option is implemented internally.
This is done because normally the backup has to be run with root authorization, otherwise files that are read protected by users would not be backed up. Any streaming device can be used for writing the data to it.
The only thing it must be able to do is to distinguish between several files on tape so that it can be positioned directly. Writing backups is normally done sequentially: The next writing to tape goes to the end of the previous write no matter from where you have restored in the meantime.
There is a special possibility for the administrator to change the next writing position, but this should be done only in emergency cases (See: PROGRAMS, "cartis"). Another way to be more flexible here is to configure variable append mode.
<<lessThe backup on the clients can be started automatically using cron-jobs on the clients, but the more intelligent solution is to start it remotely from a central administrative host. To be independent of tricks like rsh, rcp and so on, that are in fact security holes, this remote start option is implemented internally.
This is done because normally the backup has to be run with root authorization, otherwise files that are read protected by users would not be backed up. Any streaming device can be used for writing the data to it.
The only thing it must be able to do is to distinguish between several files on tape so that it can be positioned directly. Writing backups is normally done sequentially: The next writing to tape goes to the end of the previous write no matter from where you have restored in the meantime.
There is a special possibility for the administrator to change the next writing position, but this should be done only in emergency cases (See: PROGRAMS, "cartis"). Another way to be more flexible here is to configure variable append mode.
Download (0.95MB)
Added: 2007-01-23 License: GPL (GNU General Public License) Price:
1011 downloads
ABacoD 1.4
ABacoD is an automatic backup script. more>>
ABacoD is an automatic backup script.
Transfers files and directory renaming them with a configurable logic.
Source path can contain wildchars:
* :every string
? :every char
[...] :one specified char
Destination path can contain:
^n^ :replaced with the result of n-th expansion in source path (starting from 0)
^d^ :replaced with hour/date of the trensfer (the format is configurable)
Accept command line argumnt and/or a configuration file. Command line argument overwrite corresponding configuration files. Append implies deletion of source file.
Does not implements loops, therefore you must use cron or similar systems.
IMPORTANT NOTE: - Abacod deletes files! Testing parameters with the DUMMY (or -t) flag is safety. More safety is run with a user whose rights are the minumum possible.
Syntax
abacod [OPTION] CONFIGFILE"
-V, --version print version
-h, --help print this help
-v, --verbose print what is going to do
-t, --test dont touch filesistem, print only
-p, --srcpath SRCPATH source path (can use wildchar: *,?,[...])
-d, --dstpath DSTPATH destination path:
^n^ is replaced with n-th wildchar
^d^ is replaced with current date
-r, --deletesrc delete source
-i, --ignoredirs ignore subdirs of srcpath
-a, --append append
-o, --overwritemode MODE overwrite mode:
0: never
1: ever
2: only if newer
3: only if bigger
-m, --maxtransfer AMOUNT stop after AMOUNT transfer
-s, --transfersleep SEC sleep between transfer (default 1)
--errorsleep SEC sleep before exit on error (default 30)
-u, --forcedumask UMASK umask to use
--forcedowner ID set owner ID
--forcedgroup ID set group ID
-e, --dateformat FORMAT format to use for date (date syntax)
--testmountpoint MOUNTPOINT test mountpoint before proceeding
--testping ADDRESSORNAME ping this address before proceeding
every command line values overwrites configuration file one if there is no configuration file command ends with a -
<<lessTransfers files and directory renaming them with a configurable logic.
Source path can contain wildchars:
* :every string
? :every char
[...] :one specified char
Destination path can contain:
^n^ :replaced with the result of n-th expansion in source path (starting from 0)
^d^ :replaced with hour/date of the trensfer (the format is configurable)
Accept command line argumnt and/or a configuration file. Command line argument overwrite corresponding configuration files. Append implies deletion of source file.
Does not implements loops, therefore you must use cron or similar systems.
IMPORTANT NOTE: - Abacod deletes files! Testing parameters with the DUMMY (or -t) flag is safety. More safety is run with a user whose rights are the minumum possible.
Syntax
abacod [OPTION] CONFIGFILE"
-V, --version print version
-h, --help print this help
-v, --verbose print what is going to do
-t, --test dont touch filesistem, print only
-p, --srcpath SRCPATH source path (can use wildchar: *,?,[...])
-d, --dstpath DSTPATH destination path:
^n^ is replaced with n-th wildchar
^d^ is replaced with current date
-r, --deletesrc delete source
-i, --ignoredirs ignore subdirs of srcpath
-a, --append append
-o, --overwritemode MODE overwrite mode:
0: never
1: ever
2: only if newer
3: only if bigger
-m, --maxtransfer AMOUNT stop after AMOUNT transfer
-s, --transfersleep SEC sleep between transfer (default 1)
--errorsleep SEC sleep before exit on error (default 30)
-u, --forcedumask UMASK umask to use
--forcedowner ID set owner ID
--forcedgroup ID set group ID
-e, --dateformat FORMAT format to use for date (date syntax)
--testmountpoint MOUNTPOINT test mountpoint before proceeding
--testping ADDRESSORNAME ping this address before proceeding
every command line values overwrites configuration file one if there is no configuration file command ends with a -
Download (0.011MB)
Added: 2005-11-04 License: GPL (GNU General Public License) Price:
1449 downloads
Tree::Numbered 2.02
Tree::Numbered is a thin N-ary tree structure with a unique number for each item. more>>
Tree::Numbered is a thin N-ary tree structure with a unique number for each item.
SYNOPSYS
use Tree::Numbered;
my $tree = Tree::Numbered->new(John Doe);
$tree->append(John Doe Jr.);
$tree->append(Marry-Jane Doe);
while (my $branch = $tree->nextNode) {
$branch->delete if ($branch->getValue eq Stuff I dont want);
}
my $itemId = what_the_DB_says;
print join --- , $tree->follow($itemId); # a list of items up to itemId.
$tree->allProcess( sub {
my $self = shift;
$self->getValue =~ /^(S*)/;
$self->addField(FirstName, $1);
} );
etc.
Tree::Numbered is a special N-ary tree with a number for each node. This is useful on many occasions. The first use I found for that (and wrote this for) was to store information about the selected item as a number instead of storing the whole value which is space-expensive.
Every tree also has a lucky number of his own that distinguishes it from other trees created by the same module. This module is thin on purpose and is meant to be a base class for stuff that can make use of this behaveiour. For example, I wrote Tree::Numbered::DB which ties a tree to a table in a database, and Javascript::Menu which uses this tree to build menus for websites.
One more feature that the module implements for the ease of subclassing it is an API for adding and removing fields from trees and nodes.
<<lessSYNOPSYS
use Tree::Numbered;
my $tree = Tree::Numbered->new(John Doe);
$tree->append(John Doe Jr.);
$tree->append(Marry-Jane Doe);
while (my $branch = $tree->nextNode) {
$branch->delete if ($branch->getValue eq Stuff I dont want);
}
my $itemId = what_the_DB_says;
print join --- , $tree->follow($itemId); # a list of items up to itemId.
$tree->allProcess( sub {
my $self = shift;
$self->getValue =~ /^(S*)/;
$self->addField(FirstName, $1);
} );
etc.
Tree::Numbered is a special N-ary tree with a number for each node. This is useful on many occasions. The first use I found for that (and wrote this for) was to store information about the selected item as a number instead of storing the whole value which is space-expensive.
Every tree also has a lucky number of his own that distinguishes it from other trees created by the same module. This module is thin on purpose and is meant to be a base class for stuff that can make use of this behaveiour. For example, I wrote Tree::Numbered::DB which ties a tree to a table in a database, and Javascript::Menu which uses this tree to build menus for websites.
One more feature that the module implements for the ease of subclassing it is an API for adding and removing fields from trees and nodes.
Download (0.026MB)
Added: 2006-06-12 License: GPL (GNU General Public License) Price:
1229 downloads
arm0nia 0.2
arm0nia is a modular desktop environment. more>>
arm0nia (harmony) is a group of projects that intend to create software for making UNIX and UNIX like operating systems, more powerfull and friendly. Our first goal is to create a Dynamic Modular Desktop Environment.
Installation
1. pm.conf
The PM needs to known on which directory it is installed.
1.1. Copy the pack/pm.conf to /etc
1.2. Fix the directory variable pmdir of the pm.conf with the correct path.
Example:
If the daemon is located in directory /opt/pm/
Make sure, that the following line is exist in /etc/pm.conf
pmdir=/opt/pm
2. LD_LIBRARY_PATH
We must update ldconfigs path to check our libraries and modules. That can be done with several ways.
Note: in the following examples, I suppose that PM is located on /opt/pm
2.a. The best is to update the /etc/ld.so.conf
Open that file and append two new paths.
If our PMs directory is the /opt/pm add the following lines
/opt/pm/lib
/opt/pm/plugins
Save the file and update the cache by running ldconfig without parameters
2.b. Another way is to update the LD_LIBRARY_PATH at the system startup.
2.b.1. on bash
Open the /etc/profile and append the following lines.
LD_LIBRARY_PATH=/opt/pm/lib:/opt/pm/plugins export LD_LIBRARY_PATH
2.b.2. on tcsh
Open the /etc/csh.cshrc and append the following line.
setenv LD_LIBRARY_PATH /opt/pm/lib:/opt/pm/plugins
Finally do a reboot (you can avoid it, but if you known how, then you dont need to read my doc).
2.c. Another way is to update the LD_LIBRARY_PATH at the shells login script.
The shells login scripts are for bash: ~/.profile for tcsh: ~/.login
You must append the same text as for 2.b case
2.d. Of course, you can do it manually from CLI, but if you are new, use the 2.b case
3. make
Suppose that PM is located on /opt/pm
Use make on
/opt/pm to create daemon and libraries
/opt/pm/plugins to create the plugins
/opt/pm/apps to create the applications
4. run
Run pmd on a virtual-console and try the application on another.
<<lessInstallation
1. pm.conf
The PM needs to known on which directory it is installed.
1.1. Copy the pack/pm.conf to /etc
1.2. Fix the directory variable pmdir of the pm.conf with the correct path.
Example:
If the daemon is located in directory /opt/pm/
Make sure, that the following line is exist in /etc/pm.conf
pmdir=/opt/pm
2. LD_LIBRARY_PATH
We must update ldconfigs path to check our libraries and modules. That can be done with several ways.
Note: in the following examples, I suppose that PM is located on /opt/pm
2.a. The best is to update the /etc/ld.so.conf
Open that file and append two new paths.
If our PMs directory is the /opt/pm add the following lines
/opt/pm/lib
/opt/pm/plugins
Save the file and update the cache by running ldconfig without parameters
2.b. Another way is to update the LD_LIBRARY_PATH at the system startup.
2.b.1. on bash
Open the /etc/profile and append the following lines.
LD_LIBRARY_PATH=/opt/pm/lib:/opt/pm/plugins export LD_LIBRARY_PATH
2.b.2. on tcsh
Open the /etc/csh.cshrc and append the following line.
setenv LD_LIBRARY_PATH /opt/pm/lib:/opt/pm/plugins
Finally do a reboot (you can avoid it, but if you known how, then you dont need to read my doc).
2.c. Another way is to update the LD_LIBRARY_PATH at the shells login script.
The shells login scripts are for bash: ~/.profile for tcsh: ~/.login
You must append the same text as for 2.b case
2.d. Of course, you can do it manually from CLI, but if you are new, use the 2.b case
3. make
Suppose that PM is located on /opt/pm
Use make on
/opt/pm to create daemon and libraries
/opt/pm/plugins to create the plugins
/opt/pm/apps to create the applications
4. run
Run pmd on a virtual-console and try the application on another.
Download (0.10MB)
Added: 2005-04-26 License: GPL (GNU General Public License) Price:
1641 downloads
Splashy for Edgy 1.5
Splashy for Edgy project paints graphic images directly to framebuffers using libdirectfb. more>>
Splashy for Edgy project paints graphic images directly to framebuffers using libdirectfb.
Splashy is a boot splash program that doesnt require patching the Linux kernel. Splashy project paints graphic images directly to framebuffers using libdirectfb.
-----------------------------------------------------------------
VGA settings
-----------------------------------------------------------------
640x480 800x600 1024x768 1280x1024
256 colors 768 771 773 775
32K colors 784 787 790 793
64K colors 785 788 791 794
16M colors 786 789 792 795
-----------------------------------------------------------------
For 1024x768 at 16bit (64K colors or "thousands of colors") you could pass an argument to the kernel like:
vga=791
These values could be used in base16 also (hexadecimal) like:
vga=0x317
To pass arguments to the kernel, you would need to edit your boot-loader:
1. Grub /boot/grub/menu.lst
hint, in debian, look for "#kopt" and append vga=0x317 to that line. Then run update-grub. Other distros edit the kernel root= line appropriately
2. Lilo /etc/lilo.conf
hint, look for the default image= and edit append= by appending vga=0x317 to it
3. Quik /etc/quik.conf
on PPC machines. Append vga=0x317 to the kernel argument line
<<lessSplashy is a boot splash program that doesnt require patching the Linux kernel. Splashy project paints graphic images directly to framebuffers using libdirectfb.
-----------------------------------------------------------------
VGA settings
-----------------------------------------------------------------
640x480 800x600 1024x768 1280x1024
256 colors 768 771 773 775
32K colors 784 787 790 793
64K colors 785 788 791 794
16M colors 786 789 792 795
-----------------------------------------------------------------
For 1024x768 at 16bit (64K colors or "thousands of colors") you could pass an argument to the kernel like:
vga=791
These values could be used in base16 also (hexadecimal) like:
vga=0x317
To pass arguments to the kernel, you would need to edit your boot-loader:
1. Grub /boot/grub/menu.lst
hint, in debian, look for "#kopt" and append vga=0x317 to that line. Then run update-grub. Other distros edit the kernel root= line appropriately
2. Lilo /etc/lilo.conf
hint, look for the default image= and edit append= by appending vga=0x317 to it
3. Quik /etc/quik.conf
on PPC machines. Append vga=0x317 to the kernel argument line
Download (0.52MB)
Added: 2007-02-22 License: GPL (GNU General Public License) Price:
979 downloads
Class::Generate 1.09
Class::Generate is a Perl module that can generate Perl class hierarchies. more>>
Class::Generate is a Perl module that can generate Perl class hierarchies.
SYNOPSIS
use Class::Generate qw(class subclass delete_class);
# Declare class Class_Name, with the following types of members:
class
Class_Name => [
s => $, # scalar
a => @, # array
h => %, # hash
c => Class, # Class
c_a => @Class, # array of Class
c_h => %Class, # hash of Class
&m => body, # method
];
# Allocate an instance of class_name, with members initialized to the
# given values (pass arrays and hashes using references).
$obj = Class_Name->new ( s => scalar,
a => [ values ],
h => { key1 => v1, ... },
c => Class->new,
c_a => [ Class->new, ... ],
c_h => [ key1 => Class->new, ... ] );
# Scalar type accessor:
$obj->s($value); # Assign $value to member s.
$member_value = $obj->s; # Access members value.
# (Class) Array type accessor:
$obj->a([value1, value2, ...]); # Assign whole array to member.
$obj->a(2, $value); # Assign $value to array member 2.
$obj->add_a($value); # Append $value to end of array.
@a = $obj->a; # Access whole array.
$ary_member_value = $obj->a(2); # Access array member 2.
$s = $obj->a_size; # Return size of array.
$value = $obj->last_a; # Return last element of array.
# (Class) Hash type accessor:
$obj->h({ k_1=>v1, ..., k_n=>v_n }) # Assign whole hash to member.
$obj->h($key, $value); # Assign $value to hash member $key.
%hash = $obj->h; # Access whole hash.
$hash_member_value = $obj->h($key); # Access hash member value $key.
$obj->delete_h($key); # Delete slot occupied by $key.
@keys = $obj->h_keys; # Access keys of member h.
@values = $obj->h_values; # Access values of member h.
$another = $obj->copy; # Copy an object.
if ( $obj->equals($another) ) { ... } # Test equality.
subclass s => [ ], -parent => class_name;
The Class::Generate package exports functions that take as arguments a class specification and create from these specifications a Perl 5 class. The specification language allows many object-oriented constructs: typed members, inheritance, private members, required members, default values, object methods, class methods, class variables, and more.
CPAN contains similar packages. Why another? Because object-oriented programming, especially in a dynamic language like Perl, is a complicated endeavor. I wanted a package that would work very hard to catch the errors you (well, I anyway) commonly make. I wanted a package that could help me enforce the contract of object-oriented programming. I also wanted it to get out of my way when I asked.
<<lessSYNOPSIS
use Class::Generate qw(class subclass delete_class);
# Declare class Class_Name, with the following types of members:
class
Class_Name => [
s => $, # scalar
a => @, # array
h => %, # hash
c => Class, # Class
c_a => @Class, # array of Class
c_h => %Class, # hash of Class
&m => body, # method
];
# Allocate an instance of class_name, with members initialized to the
# given values (pass arrays and hashes using references).
$obj = Class_Name->new ( s => scalar,
a => [ values ],
h => { key1 => v1, ... },
c => Class->new,
c_a => [ Class->new, ... ],
c_h => [ key1 => Class->new, ... ] );
# Scalar type accessor:
$obj->s($value); # Assign $value to member s.
$member_value = $obj->s; # Access members value.
# (Class) Array type accessor:
$obj->a([value1, value2, ...]); # Assign whole array to member.
$obj->a(2, $value); # Assign $value to array member 2.
$obj->add_a($value); # Append $value to end of array.
@a = $obj->a; # Access whole array.
$ary_member_value = $obj->a(2); # Access array member 2.
$s = $obj->a_size; # Return size of array.
$value = $obj->last_a; # Return last element of array.
# (Class) Hash type accessor:
$obj->h({ k_1=>v1, ..., k_n=>v_n }) # Assign whole hash to member.
$obj->h($key, $value); # Assign $value to hash member $key.
%hash = $obj->h; # Access whole hash.
$hash_member_value = $obj->h($key); # Access hash member value $key.
$obj->delete_h($key); # Delete slot occupied by $key.
@keys = $obj->h_keys; # Access keys of member h.
@values = $obj->h_values; # Access values of member h.
$another = $obj->copy; # Copy an object.
if ( $obj->equals($another) ) { ... } # Test equality.
subclass s => [ ], -parent => class_name;
The Class::Generate package exports functions that take as arguments a class specification and create from these specifications a Perl 5 class. The specification language allows many object-oriented constructs: typed members, inheritance, private members, required members, default values, object methods, class methods, class variables, and more.
CPAN contains similar packages. Why another? Because object-oriented programming, especially in a dynamic language like Perl, is a complicated endeavor. I wanted a package that would work very hard to catch the errors you (well, I anyway) commonly make. I wanted a package that could help me enforce the contract of object-oriented programming. I also wanted it to get out of my way when I asked.
Download (0.052MB)
Added: 2007-07-31 License: Perl Artistic License Price:
815 downloads
AI::Prolog::Introduction 0.739
AI::Prolog::Introduction Perl module contains the what and the why of logic programming. more>>
AI::Prolog::Introduction Perl module contains the what and the why of logic programming.
You can skip this if you already know logic programming.
Note that most of this was pulled from my write-up about logic programming in Perl at http://www.perlmonks.org/?node_id=424075.
In Perl, generally you can append one list to another with this:
my @Z = (@X, @Y);
However, thats telling the language what to do. As sentient beings, we can look at that and infer more information. Given @Z and @X, we could infer @Y. Given just @Z, we could infer all combinations of @X and @Y that can be combined to form @Z.
Perl cannot do that. In logic programming, however, by defining what append() looks like, we get all of that other information.
In Prolog, it looks like this:
append([], X, X).
append([W|X],Y,[W|Z]) :- append(X,Y,Z).
(Theres actually often something called a "cut" after the first definition, but well keep this simple.)
What the above code says is "appending an empty list to a non-empty list yields the non-empty list." This is a boundary condition. Logic programs frequently require a careful analysis of boundary conditions to avoid infinite loops (similar to how recursive functions in Perl generally should have a terminating condition defined in them.)
The second line is where the bulk of the work gets done. In Prolog, to identify the head (first element) of a list and its tail (all elements except the first), we use the syntax [head|tail]. Since ":-" is read as "if" in Prolog, what this says if we want to concatenate (a,b,c) and (d,e,f):
Given a list with a head of W and a tail of X:
@list1 = qw/a b c/; (qw/a/ is W, the head, and qw/b c/ is X, the tail)
If its appended to list Y:
@Y = qw/d e f/;
We get a list with a head of W and a tail of Z:
@list2 = qw/a b c d e f/;
Only if X appended to Y forms Z:
X is qw/b c/. Y is qw/d e f/. Z is qw/b c d e f/.
<<lessYou can skip this if you already know logic programming.
Note that most of this was pulled from my write-up about logic programming in Perl at http://www.perlmonks.org/?node_id=424075.
In Perl, generally you can append one list to another with this:
my @Z = (@X, @Y);
However, thats telling the language what to do. As sentient beings, we can look at that and infer more information. Given @Z and @X, we could infer @Y. Given just @Z, we could infer all combinations of @X and @Y that can be combined to form @Z.
Perl cannot do that. In logic programming, however, by defining what append() looks like, we get all of that other information.
In Prolog, it looks like this:
append([], X, X).
append([W|X],Y,[W|Z]) :- append(X,Y,Z).
(Theres actually often something called a "cut" after the first definition, but well keep this simple.)
What the above code says is "appending an empty list to a non-empty list yields the non-empty list." This is a boundary condition. Logic programs frequently require a careful analysis of boundary conditions to avoid infinite loops (similar to how recursive functions in Perl generally should have a terminating condition defined in them.)
The second line is where the bulk of the work gets done. In Prolog, to identify the head (first element) of a list and its tail (all elements except the first), we use the syntax [head|tail]. Since ":-" is read as "if" in Prolog, what this says if we want to concatenate (a,b,c) and (d,e,f):
Given a list with a head of W and a tail of X:
@list1 = qw/a b c/; (qw/a/ is W, the head, and qw/b c/ is X, the tail)
If its appended to list Y:
@Y = qw/d e f/;
We get a list with a head of W and a tail of Z:
@list2 = qw/a b c d e f/;
Only if X appended to Y forms Z:
X is qw/b c/. Y is qw/d e f/. Z is qw/b c d e f/.
Download (0.068MB)
Added: 2007-07-04 License: Perl Artistic License Price:
842 downloads
pretrace 0.4
pretrace is a preload library that allows specified (dynamically linked) applications to always be executed. more>>
pretrace is a preload library that allows specified (dynamically linked) applications to always be executed under a debugging environment.
pretrace library allows you to specify the percentage of invocations which will be traced, to help you "keep an eye" on applications without bringing the machine to its knees.
To start using pretrace, add libpretrace.so to your /etc/ld.so.preload.
root# echo /lib/libpretrace.so >> /etc/ld.so.preload
You can now specify applications to trace in /etc/pretrace.conf, the format is one application per line, if you would like to specify a debugger append a colon, then the full path to the debugger and any arguments you would like to pass. If you do not specify a debugger, you get the default, strace, which saves the output to .logfile in the current working directory.
An optional number can be appended in the format %N, eg %50, to specify what percentage of invocations should be traced.
# this is a comment
/full/path/to/application[%percent][:/full/path/to/debugger [arg1 arg2 ...]]
An example pretrace.conf is provided with this distribution.
After modifying pretrace.conf, you should execute ptgenmap to generate a new map file, this is used to quickly parse the configuration file with minimal impact on initialisation time.
libpretrace is designed as a debugging utility for developers and auditors, and should not be used in a production environment.
<<lesspretrace library allows you to specify the percentage of invocations which will be traced, to help you "keep an eye" on applications without bringing the machine to its knees.
To start using pretrace, add libpretrace.so to your /etc/ld.so.preload.
root# echo /lib/libpretrace.so >> /etc/ld.so.preload
You can now specify applications to trace in /etc/pretrace.conf, the format is one application per line, if you would like to specify a debugger append a colon, then the full path to the debugger and any arguments you would like to pass. If you do not specify a debugger, you get the default, strace, which saves the output to .logfile in the current working directory.
An optional number can be appended in the format %N, eg %50, to specify what percentage of invocations should be traced.
# this is a comment
/full/path/to/application[%percent][:/full/path/to/debugger [arg1 arg2 ...]]
An example pretrace.conf is provided with this distribution.
After modifying pretrace.conf, you should execute ptgenmap to generate a new map file, this is used to quickly parse the configuration file with minimal impact on initialisation time.
libpretrace is designed as a debugging utility for developers and auditors, and should not be used in a production environment.
Download (0.007MB)
Added: 2005-12-16 License: GPL (GNU General Public License) Price:
1407 downloads
Secleted [ 0 ] software to compare
Copyright Notice:
Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future software development. The above append search only lists software in full, demo and trial versions for free download. Download links are directly from our mirror sites or publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed