traverse
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 60
nat-traverse 0.4
nat-traverse establishes connections between hosts which are behind NAT gateways. more>>
nat-traverse establishes connections between nodes which are behind NAT gateways, i.e. hosts which do not have public IP addresses.
Additionally, you can setup a small VPN by using pppd on top of nat-traverse. nat-traverse does not need an external server on the Internet, and it isnt necessary to reconfigure the involved NAT gateways, either. nat-traverse works out-of-the-box.
Version restrictions:
- Only IPv4 is supported, nat-traverse wont work with IPv6 addresses. Even though it would be relatively trivial to add IPv6 support, I refrained from doing that, as theres no need to use NAT with IPv6 (the address space IPv6 provides is sufficient).
Enhancements:
- New option --quit-after-connect quits nat-traverse after the tunnel has been established successfully.
<<lessAdditionally, you can setup a small VPN by using pppd on top of nat-traverse. nat-traverse does not need an external server on the Internet, and it isnt necessary to reconfigure the involved NAT gateways, either. nat-traverse works out-of-the-box.
Version restrictions:
- Only IPv4 is supported, nat-traverse wont work with IPv6 addresses. Even though it would be relatively trivial to add IPv6 support, I refrained from doing that, as theres no need to use NAT with IPv6 (the address space IPv6 provides is sufficient).
Enhancements:
- New option --quit-after-connect quits nat-traverse after the tunnel has been established successfully.
Download (0.015MB)
Added: 2005-08-23 License: GPL (GNU General Public License) Price:
1524 downloads
xRecurseDiff 1.6
xRecurseDiff is a small program that can rapidly traverse entire directory trees. more>>
xRecurseDiff is a small sotware, useful for all those programmers working with a own code repository (class library or similar). Helps to rapidly verify difference between different copies of the same file.
For every file in project directory search in library directory for files having the same name. A report containing results is shown. A detailed diff output can be shown. Search can be case-insensitive and limited by a char filter.
Installation:
Extract archive: tar xzf xRecurseDiff.version.tgz
Enter in the new directory: cd xRecurseDiff.version
Link the correct language file: ln -s lang/xrdstrings-lang.h xrdstrings.h
Compile: make
Copy in the path: cp xrecursediff /usr/local/bin/
<<lessFor every file in project directory search in library directory for files having the same name. A report containing results is shown. A detailed diff output can be shown. Search can be case-insensitive and limited by a char filter.
Installation:
Extract archive: tar xzf xRecurseDiff.version.tgz
Enter in the new directory: cd xRecurseDiff.version
Link the correct language file: ln -s lang/xrdstrings-lang.h xrdstrings.h
Compile: make
Copy in the path: cp xrecursediff /usr/local/bin/
Download (0.016MB)
Added: 2007-06-11 License: GPL (GNU General Public License) Price:
865 downloads
Java Properties 0.8.3
Java Properties provides an efficient way to access bean-like properties of Java objects. more>>
Java Properties provides an efficient way to access bean-like properties of Java objects.
In a nutshell, provides an efficient way to access bean-like properties of java objects. Unlike java bean properties, a chain of properties can be specified efficiently, allowing convenient access to properties of nested domain objects.
Runtime class-generation and caching can be used very easily to obviate the need for reflection, without losing the flexibility it provides.
Class Properties It also provides classes which manipulate objects at runtime by using strings to address conceptual variables (think bean properties) in a similar fashion to the java reflection mechanisms.
Class Property example Say we have the following classes:
public class Order {
...
public Customer getCustomer() { ... }
...
}
public class Customer {
...
public Address getAddress() { ... }
...
}
public class Address {
...
public String getLine1() { ... }
public String getLine2() { ... }
...
}
Now, we could do this to access line 1 of the address:
result = order.getCustomer().getAddress().getLine1();
But what if there are nulls? What if we want to compare the first line of the address from two different orders? Whith properties this is really simple:
ClassProperty p = PropertyManager.getProperty(Order.class,"Customer:Address:Line1",true);
result = p.getValue(order);
The idea is simple enough - you use the string "Customer:Address:Line1" to specify a series of getXXX calls. Importantly, it the library handles nulls for you, returning null if any of the objects in the chain are null.
Note, this is not simply a wrapper around java reflection, since it includes non-reflective optimizations by making use of the cojen library to generate class files at runtime to acces these properties.
The real benefit lies in being able to specify which properties you wish to access at runtime. You can even pass this ability on to the users of your library or application. Unlike reflection, class files are generated for the properties, and these files are cached - which means once you have specified a property once, further uses of the same property dont use reflection and are very fast.
Property API vs Java Bean Properties. The property API models accessor/mutator method pairs as conceptual variables called properties. The approach used is similar to, but more flexible than java bean properties, and more performant than reflection if runtime class generation is used. Unlike java bean properties, a chain or path of properties can be specified (and more importantly, turned into bytecode using runtime generation) to traverse a complex tree of objects.
It is simple to create applications portable between different security environments - using runtime generation where allowed, and falling back to reflection where security is tighter.
Dynamic Class Management. The properties package also provides classes to handle the loading (and unloading/reloading) of classes at runtime. It provides a framework useful for dynamically loading runtime-generated classes, for example.
While the property API can happily ignore the dynamic loading framework, it can also make use of it to enable runtime class generation.
<<lessIn a nutshell, provides an efficient way to access bean-like properties of java objects. Unlike java bean properties, a chain of properties can be specified efficiently, allowing convenient access to properties of nested domain objects.
Runtime class-generation and caching can be used very easily to obviate the need for reflection, without losing the flexibility it provides.
Class Properties It also provides classes which manipulate objects at runtime by using strings to address conceptual variables (think bean properties) in a similar fashion to the java reflection mechanisms.
Class Property example Say we have the following classes:
public class Order {
...
public Customer getCustomer() { ... }
...
}
public class Customer {
...
public Address getAddress() { ... }
...
}
public class Address {
...
public String getLine1() { ... }
public String getLine2() { ... }
...
}
Now, we could do this to access line 1 of the address:
result = order.getCustomer().getAddress().getLine1();
But what if there are nulls? What if we want to compare the first line of the address from two different orders? Whith properties this is really simple:
ClassProperty p = PropertyManager.getProperty(Order.class,"Customer:Address:Line1",true);
result = p.getValue(order);
The idea is simple enough - you use the string "Customer:Address:Line1" to specify a series of getXXX calls. Importantly, it the library handles nulls for you, returning null if any of the objects in the chain are null.
Note, this is not simply a wrapper around java reflection, since it includes non-reflective optimizations by making use of the cojen library to generate class files at runtime to acces these properties.
The real benefit lies in being able to specify which properties you wish to access at runtime. You can even pass this ability on to the users of your library or application. Unlike reflection, class files are generated for the properties, and these files are cached - which means once you have specified a property once, further uses of the same property dont use reflection and are very fast.
Property API vs Java Bean Properties. The property API models accessor/mutator method pairs as conceptual variables called properties. The approach used is similar to, but more flexible than java bean properties, and more performant than reflection if runtime class generation is used. Unlike java bean properties, a chain or path of properties can be specified (and more importantly, turned into bytecode using runtime generation) to traverse a complex tree of objects.
It is simple to create applications portable between different security environments - using runtime generation where allowed, and falling back to reflection where security is tighter.
Dynamic Class Management. The properties package also provides classes to handle the loading (and unloading/reloading) of classes at runtime. It provides a framework useful for dynamically loading runtime-generated classes, for example.
While the property API can happily ignore the dynamic loading framework, it can also make use of it to enable runtime class generation.
Download (0.017MB)
Added: 2007-01-10 License: GPL (GNU General Public License) Price:
1017 downloads
TextMaze 1.2
TextMaze project is a console-based maze game. more>>
TextMaze project is a console-based maze game.
It generates random mazes and allows you to traverse them using the arrow keys.
Once you complete the maze you are given an uplifting congratulations.
<<lessIt generates random mazes and allows you to traverse them using the arrow keys.
Once you complete the maze you are given an uplifting congratulations.
Download (0.015MB)
Added: 2006-11-13 License: GPL (GNU General Public License) Price:
1077 downloads
The Wonder Shaper 1.1a
The Wonder Shaper is a very special network shaper script with a lot of features. more>>
The Wonder Shaper is a very special network shaper script with a lot of features. Works on Linux 2.4 & higher.
Goals
I attempted to create the holy grail:
* Maintain low latency for interfactive traffic at all times.
This means that downloading or uploading files should not disturb SSH or even telnet. These are the most important things, even 200ms latency is sluggish to work over.
* Allow surfing at reasonable speeds while up or downloading
Even though http is bulk traffic, other traffic should not drown it out too much.
* Make sure uploads dont harm downloads, and the other way around
This is a much observed phenomenon where upstream traffic simply destroys download speed. It turns out that all this is possible, at the cost of a tiny bit of bandwidth. The reason that uploads, downloads and ssh hurt eachother is the presence of large queues in many domestic access devices like cable or DSL modems.
Why it doesnt work well by default
ISPs know that they are benchmarked solely on how fast people can download. Besides available bandwidth, download speed is influenced heavily by packet loss, which seriously hampers TCP/IP performance. Large queues can help prevent packetloss, and speed up downloads. So ISPs configure large queues.
These large queues however damage interactivity. A keystroke must first travel the upstream queue, which may be seconds (!) long and go to your remote host. It is then displayed, which leads to a packet coming back, which must then traverse the downstream queue, located at your ISP, before it appears on your screen.
This HOWTO teaches you how to mangle and process the queue in many ways, but sadly, not all queues are accessible to us. The queue over at the ISP is completely off-limits, whereas the upstream queue probably lives inside your cable modem or DSL device. You may or may not be able to configure it. Most probably not.
So, what next? As we cant control either of those queues, they must be eliminated, and moved to your Linux router. Luckily this is possible.
Limit upload speed somewhat
By limiting our upload speed to slightly less than the truly available rate, no queues are built up in our modem. The queue is now moved to Linux.
Limit download speed
This is slightly trickier as we cant really influence how fast the internet ships us data. We can however drop packets that are coming in too fast, which causes TCP/IP to slow down to just the rate we want. Because we dont want to drop traffic unnecessarily, we configure a burst size we allow at higher speed.
Now, once we have done this, we have eliminated the downstream queue totally (except for short bursts), and gain the ability to manage the upstream queue with all the power Linux offers.
Let interactive traffic skip the queue
What remains to be done is to make sure interactive traffic jumps to the front of the upstream queue. To make sure that uploads dont hurt downloads, we also move ACK packets to the front of the queue. This is what normally causes the huge slowdown observed when generating bulk traffic both ways. The ACKnowledgements for downstream traffic must compete with upstream traffic, and get delayed in the process.
We also move other small packets to the front of the queue - this helps operating systems which do not set TOS bits, like everything from Microsoft.
Allow the user to specify low priority traffic (new in 1.1!)
Sometimes you may notice low priority OUTGOING traffic slowing down important traffic. In that case, the following options may help you:
NOPRIOHOSTSRC
Set this to hosts or netmasks in your network that should have low priority
NOPRIOHOSTDST
Set this to hosts or netmasks on the internet that should have low priority
NOPRIOPORTSRC
Set this to source ports that should have low priority. If you have an unimportant webserver on your traffic, set this to 80
NOPRIOPORTDST
Set this to destination ports that should have low priority.
See the start of wshaper and wshaper.htb
Results
If we do all this we get the following measurements using an excellent ADSL connection from xs4all in the Netherlands:
Baseline latency:
round-trip min/avg/max = 14.4/17.1/21.7 ms
Without traffic conditioner, while downloading:
round-trip min/avg/max = 560.9/573.6/586.4 ms
Without traffic conditioner, while uploading:
round-trip min/avg/max = 2041.4/2332.1/2427.6 ms
With conditioner, during 220kbit/s upload:
round-trip min/avg/max = 15.7/51.8/79.9 ms
With conditioner, during 850kbit/s download:
round-trip min/avg/max = 20.4/46.9/74.0 ms
When uploading, downloads proceed at ~80% of the available speed. Uploads at around 90%. Latency then jumps to 850 ms, still figuring out why.
What you can expect from this script depends a lot on your actual uplink speed. When uploading at full speed, there will always be a single packet ahead of your keystroke. That is the lower limit to the latency you can achieve - divide your MTU by your upstream speed to calculate. Typical values will be somewhat higher than that. Lower your MTU for better effects!
A small table:
Uplink speed | Expected latency due to upload
--------------------------------------------------
32 | 234ms
64 | 117ms
128 | 58ms
256 | 29ms
So to calculate your effective latency, take a baseline measurement (ping on an unloaded link), and look up the number in the table, and add it. That is about the best you can expect. This number comes from a calculation that assumes that your upstream keystroke will have at most half a full sized packet ahead of it.
This boils down to:
mtu * 0.5 * 10
-------------- + baseline_latency
kbit
The factor 10 is not quite correct but works well in practice.
Your kernel
If you run a recent distribution, everything should be ok. You need 2.4 with QoS options turned on.
If you compile your own kernel, it must have some options enabled. Most notably, in the Networking Options menu, QoS and/or Fair Queueing, turn at least CBQ, PRIO, SFQ, Ingress, Traffic Policing, QoS support, Rate Estimator, QoS classifier, U32 classifier, fwmark classifier.
In practice, I (and most distributions) just turn on everything.
The scripts
The script comes in two versions, one which works on standard kernels and is implemented using CBQ. The other one uses the excellent HTB qdisc which is not in the default kernel. The CBQ version is more tested than the HTB one!
See wshaper and wshaper.htb.
Tuning
These scripts need to know the real rate of your ISP connection. This is hard to determine upfront as different ISPs use different kinds of bits it appears. People report success using the following technique:
Estimate both your upstream and downstream at half the rate your ISP specifies. Now verify if the script is functioning - check interactivity while uploading and while downloading. This should deliver the latency as calculated above. If not, check if the script executed without errors.
Now slowly increase the upstream & downstream numbers in the script until the latency comes back. This way you can find optimum values for your connection. If you are happy, please report to me so I can make a list of numbers that work well. Please let me know which ISP you use and the name of your subscription, and its reputed specifications, so I can list you here and save others the trouble.
Installation
If you dial in, you can copy the script to /etc/ppp/ip-up.d and it will be run at each connect.
If you want to remove the shaper from an interface, run wshaper stop. To see status information, run wshaper status.
KNOWN PROBLEMS
If you get errors, add an -x to the first line, as follows:
#!/bin/bash -x
And retry. This will show you which line gives an error. Before contacting me, make sure that you are running a recent version of iproute!
Recent versions can be found at your Linux distributor, or if you prefer compiling, here:
ftp://ftp.inr.ac.ru/ip-routing/iproute2-current.tar.gz
<<lessGoals
I attempted to create the holy grail:
* Maintain low latency for interfactive traffic at all times.
This means that downloading or uploading files should not disturb SSH or even telnet. These are the most important things, even 200ms latency is sluggish to work over.
* Allow surfing at reasonable speeds while up or downloading
Even though http is bulk traffic, other traffic should not drown it out too much.
* Make sure uploads dont harm downloads, and the other way around
This is a much observed phenomenon where upstream traffic simply destroys download speed. It turns out that all this is possible, at the cost of a tiny bit of bandwidth. The reason that uploads, downloads and ssh hurt eachother is the presence of large queues in many domestic access devices like cable or DSL modems.
Why it doesnt work well by default
ISPs know that they are benchmarked solely on how fast people can download. Besides available bandwidth, download speed is influenced heavily by packet loss, which seriously hampers TCP/IP performance. Large queues can help prevent packetloss, and speed up downloads. So ISPs configure large queues.
These large queues however damage interactivity. A keystroke must first travel the upstream queue, which may be seconds (!) long and go to your remote host. It is then displayed, which leads to a packet coming back, which must then traverse the downstream queue, located at your ISP, before it appears on your screen.
This HOWTO teaches you how to mangle and process the queue in many ways, but sadly, not all queues are accessible to us. The queue over at the ISP is completely off-limits, whereas the upstream queue probably lives inside your cable modem or DSL device. You may or may not be able to configure it. Most probably not.
So, what next? As we cant control either of those queues, they must be eliminated, and moved to your Linux router. Luckily this is possible.
Limit upload speed somewhat
By limiting our upload speed to slightly less than the truly available rate, no queues are built up in our modem. The queue is now moved to Linux.
Limit download speed
This is slightly trickier as we cant really influence how fast the internet ships us data. We can however drop packets that are coming in too fast, which causes TCP/IP to slow down to just the rate we want. Because we dont want to drop traffic unnecessarily, we configure a burst size we allow at higher speed.
Now, once we have done this, we have eliminated the downstream queue totally (except for short bursts), and gain the ability to manage the upstream queue with all the power Linux offers.
Let interactive traffic skip the queue
What remains to be done is to make sure interactive traffic jumps to the front of the upstream queue. To make sure that uploads dont hurt downloads, we also move ACK packets to the front of the queue. This is what normally causes the huge slowdown observed when generating bulk traffic both ways. The ACKnowledgements for downstream traffic must compete with upstream traffic, and get delayed in the process.
We also move other small packets to the front of the queue - this helps operating systems which do not set TOS bits, like everything from Microsoft.
Allow the user to specify low priority traffic (new in 1.1!)
Sometimes you may notice low priority OUTGOING traffic slowing down important traffic. In that case, the following options may help you:
NOPRIOHOSTSRC
Set this to hosts or netmasks in your network that should have low priority
NOPRIOHOSTDST
Set this to hosts or netmasks on the internet that should have low priority
NOPRIOPORTSRC
Set this to source ports that should have low priority. If you have an unimportant webserver on your traffic, set this to 80
NOPRIOPORTDST
Set this to destination ports that should have low priority.
See the start of wshaper and wshaper.htb
Results
If we do all this we get the following measurements using an excellent ADSL connection from xs4all in the Netherlands:
Baseline latency:
round-trip min/avg/max = 14.4/17.1/21.7 ms
Without traffic conditioner, while downloading:
round-trip min/avg/max = 560.9/573.6/586.4 ms
Without traffic conditioner, while uploading:
round-trip min/avg/max = 2041.4/2332.1/2427.6 ms
With conditioner, during 220kbit/s upload:
round-trip min/avg/max = 15.7/51.8/79.9 ms
With conditioner, during 850kbit/s download:
round-trip min/avg/max = 20.4/46.9/74.0 ms
When uploading, downloads proceed at ~80% of the available speed. Uploads at around 90%. Latency then jumps to 850 ms, still figuring out why.
What you can expect from this script depends a lot on your actual uplink speed. When uploading at full speed, there will always be a single packet ahead of your keystroke. That is the lower limit to the latency you can achieve - divide your MTU by your upstream speed to calculate. Typical values will be somewhat higher than that. Lower your MTU for better effects!
A small table:
Uplink speed | Expected latency due to upload
--------------------------------------------------
32 | 234ms
64 | 117ms
128 | 58ms
256 | 29ms
So to calculate your effective latency, take a baseline measurement (ping on an unloaded link), and look up the number in the table, and add it. That is about the best you can expect. This number comes from a calculation that assumes that your upstream keystroke will have at most half a full sized packet ahead of it.
This boils down to:
mtu * 0.5 * 10
-------------- + baseline_latency
kbit
The factor 10 is not quite correct but works well in practice.
Your kernel
If you run a recent distribution, everything should be ok. You need 2.4 with QoS options turned on.
If you compile your own kernel, it must have some options enabled. Most notably, in the Networking Options menu, QoS and/or Fair Queueing, turn at least CBQ, PRIO, SFQ, Ingress, Traffic Policing, QoS support, Rate Estimator, QoS classifier, U32 classifier, fwmark classifier.
In practice, I (and most distributions) just turn on everything.
The scripts
The script comes in two versions, one which works on standard kernels and is implemented using CBQ. The other one uses the excellent HTB qdisc which is not in the default kernel. The CBQ version is more tested than the HTB one!
See wshaper and wshaper.htb.
Tuning
These scripts need to know the real rate of your ISP connection. This is hard to determine upfront as different ISPs use different kinds of bits it appears. People report success using the following technique:
Estimate both your upstream and downstream at half the rate your ISP specifies. Now verify if the script is functioning - check interactivity while uploading and while downloading. This should deliver the latency as calculated above. If not, check if the script executed without errors.
Now slowly increase the upstream & downstream numbers in the script until the latency comes back. This way you can find optimum values for your connection. If you are happy, please report to me so I can make a list of numbers that work well. Please let me know which ISP you use and the name of your subscription, and its reputed specifications, so I can list you here and save others the trouble.
Installation
If you dial in, you can copy the script to /etc/ppp/ip-up.d and it will be run at each connect.
If you want to remove the shaper from an interface, run wshaper stop. To see status information, run wshaper status.
KNOWN PROBLEMS
If you get errors, add an -x to the first line, as follows:
#!/bin/bash -x
And retry. This will show you which line gives an error. Before contacting me, make sure that you are running a recent version of iproute!
Recent versions can be found at your Linux distributor, or if you prefer compiling, here:
ftp://ftp.inr.ac.ru/ip-routing/iproute2-current.tar.gz
Download (MB)
Added: 2007-02-13 License: GPL (GNU General Public License) Price:
994 downloads
RealmForge 0.6.2
RealmForge project is a cross-platform 3D game engine for .NET. more>>
RealmForge project is a cross-platform 3D game engine for .NET.
RealmForge is a .NET 3D game engine predecessor to Visual3D.NET (www.visual3d.net), which is a framework and toolset for the visual design and development of 3D games, simulations, and interactive environments using C#, .NET 2.0, visual scripting, and the XNA Framework.
Enhancements:
- Access InGame Editor
- Press F11 with any application to toggle the InGame Editor on and off for editing games at runtime
- Controllerbased Input
- Intuitive componentbased input handling and behaviors that are easily extended
- Support for Editor/DevTool Plugins
- Devtools have been factored out of WorkspaceManager and are organized as simple and extendible or plugins
- Input focus fix
- Input isnt handled when working with the devtools
- Clicking on the render window will remove focus from devtools, enabling input again
- DragDrop Scene Creation
- Drag templates from the Scene Object Templates window onto the Scene window
- Reorganize the scene graph in the scene window and the templates in the Scene Object Templates window
- Click on nodes in the Scene window to select them
- Property Editing:
- Select nodes by clicking on them in the render window or Scene window and edit their properties in the Properties window (Property Inspector)
- Select components (such as the rendering engine or application) from the Components menu in the InGame Editor to edit their properties
- The properties are grouped and have descriptions and any custom properties added will show up as well
- New properties and ways of editing properties (especially collections) will be added in the future as well as fixes for properties like Orientation angles, Absolute Position, Direction, etc that may not work properly at the moment.
- About Box:
- The Help > About RealmForge GDK menu item now shows the About Box properly with information about the project and its developers.
- Event Editing:
- Click on the "View > Event Scripting Designer" menu item to work with the designer to visually script events
- Selecting a target from the dropdown list and an event from the list right below it
- Drag scripts from the Tree of all scripts or from the list of named delegates
- Add any method in the entire framework or from plugins that has a void SimpleMethod() or void Script(object owner, object args) signature by specifying the fully qualified (include namespace) class name and members (fields and properties) that need to be traversed to get to it from a static member of that class
- You can leave the class name empty an will default to the RealmForge.RF, the singleton aggregator.
- Saving your game:
- The File > Save menu item now actually works and will save the current scene (for applications that load the scene from a master module, doesnt work for the Sample Browser tech demos yet). This feature is buggy and verbose, however since it is finally supported it wont be long before the editor will be fully usable for game development!
<<lessRealmForge is a .NET 3D game engine predecessor to Visual3D.NET (www.visual3d.net), which is a framework and toolset for the visual design and development of 3D games, simulations, and interactive environments using C#, .NET 2.0, visual scripting, and the XNA Framework.
Enhancements:
- Access InGame Editor
- Press F11 with any application to toggle the InGame Editor on and off for editing games at runtime
- Controllerbased Input
- Intuitive componentbased input handling and behaviors that are easily extended
- Support for Editor/DevTool Plugins
- Devtools have been factored out of WorkspaceManager and are organized as simple and extendible or plugins
- Input focus fix
- Input isnt handled when working with the devtools
- Clicking on the render window will remove focus from devtools, enabling input again
- DragDrop Scene Creation
- Drag templates from the Scene Object Templates window onto the Scene window
- Reorganize the scene graph in the scene window and the templates in the Scene Object Templates window
- Click on nodes in the Scene window to select them
- Property Editing:
- Select nodes by clicking on them in the render window or Scene window and edit their properties in the Properties window (Property Inspector)
- Select components (such as the rendering engine or application) from the Components menu in the InGame Editor to edit their properties
- The properties are grouped and have descriptions and any custom properties added will show up as well
- New properties and ways of editing properties (especially collections) will be added in the future as well as fixes for properties like Orientation angles, Absolute Position, Direction, etc that may not work properly at the moment.
- About Box:
- The Help > About RealmForge GDK menu item now shows the About Box properly with information about the project and its developers.
- Event Editing:
- Click on the "View > Event Scripting Designer" menu item to work with the designer to visually script events
- Selecting a target from the dropdown list and an event from the list right below it
- Drag scripts from the Tree of all scripts or from the list of named delegates
- Add any method in the entire framework or from plugins that has a void SimpleMethod() or void Script(object owner, object args) signature by specifying the fully qualified (include namespace) class name and members (fields and properties) that need to be traversed to get to it from a static member of that class
- You can leave the class name empty an will default to the RealmForge.RF, the singleton aggregator.
- Saving your game:
- The File > Save menu item now actually works and will save the current scene (for applications that load the scene from a master module, doesnt work for the Sample Browser tech demos yet). This feature is buggy and verbose, however since it is finally supported it wont be long before the editor will be fully usable for game development!
Download (81.0MB)
Added: 2006-11-08 License: LGPL (GNU Lesser General Public License) Price:
1087 downloads
GtkMathView 0.7.6
GtkMathView is a C++ rendering engine for MathML documents. more>>
GtkMathView is a C++ rendering engine for MathML documents. GtkMathView provides an interactive view that can be used for browsing and editing MathML markup.
GtkMathView reads MathML documents by means of a frontend whose purpose is to traverse the MathML document (or part of it) and to appropriately instantiate GtkMathViews internal data structures that are suitable for rendering it.
Currently the following frontends are supported:
- libxml2 frontend, in which the MathML document is represented as a tree and navigated with the libxml2 tree API.
- libxml2 reader frontend, in which the MathML document is not entirely loaded in memory and is navigated with the libxml2 reader API. This frontend is mostly useful for batch rendering of MathML documents.
- GMetaDOM frontend, in which the MathML document is represented as a tree and is navigated with the DOM API provided by GMetaDOM, which in turn is a DOM-compliant wrapper for libxml2.
- custom frontend, in which the MathML document is represented in some application-specific format and is navigated with application-provided callback functions.
GtkMathView renders MathML documents through a backend whose purpose is to provide an abstraction of the platform-specific capabilities (available fonts, drawing drawing primitives, and so on).
Currently the following backends are provided:
- GTK+ backend, for rendering MathML documents using Pango in GTK+ applications.
- GTK+ widget backend, which wraps GtkMathView in a GTK+ widget to be directly embedded in GTK+ applications.
- SVG backend, which renders MathML into SVG.
- AbiWord backend, which allows one to embed MathML documents into AbiWord by means of the AbiMathView plugin.
<<lessGtkMathView reads MathML documents by means of a frontend whose purpose is to traverse the MathML document (or part of it) and to appropriately instantiate GtkMathViews internal data structures that are suitable for rendering it.
Currently the following frontends are supported:
- libxml2 frontend, in which the MathML document is represented as a tree and navigated with the libxml2 tree API.
- libxml2 reader frontend, in which the MathML document is not entirely loaded in memory and is navigated with the libxml2 reader API. This frontend is mostly useful for batch rendering of MathML documents.
- GMetaDOM frontend, in which the MathML document is represented as a tree and is navigated with the DOM API provided by GMetaDOM, which in turn is a DOM-compliant wrapper for libxml2.
- custom frontend, in which the MathML document is represented in some application-specific format and is navigated with application-provided callback functions.
GtkMathView renders MathML documents through a backend whose purpose is to provide an abstraction of the platform-specific capabilities (available fonts, drawing drawing primitives, and so on).
Currently the following backends are provided:
- GTK+ backend, for rendering MathML documents using Pango in GTK+ applications.
- GTK+ widget backend, which wraps GtkMathView in a GTK+ widget to be directly embedded in GTK+ applications.
- SVG backend, which renders MathML into SVG.
- AbiWord backend, which allows one to embed MathML documents into AbiWord by means of the AbiMathView plugin.
Download (0.84MB)
Added: 2005-12-07 License: GPL (GNU General Public License) Price:
1416 downloads
ZoltanPlayer 1.0.0
ZoltanPlayer is a music playing daemon. more>>
ZoltanPlayer is a music playing daemon. It accepts remote commands via its own mini HTTP server and can use seamlessly Audio or Data CDs. Audio CDs are played internally (optionally querying CDDB info servers) and digital songs in audio CDs are played via external players. Its not limited to CDs, as a hard disk directory can also be used.
The optimal equipment for ZoltanPlayer is a CDROM-equipped computer directly connected to an amplifier or stereo. Its not a streaming server, nor a ripper, nor a simple HTTP+HTML interface jukebox (this could be done with a CGI). ZoltanPlayer integrates the controlling of CD insertion / eject with the capability of directly playing CD Audio and spawning external player for MP3 / Ogg Vorbis / whatever song files.
Current version is 1.0.0. This software only runs on Linux and its licensed under the GPL.
Here is a list of commands for ZoltanPlayer:
mount: Mounts the CD in the drive (closing it if necessary). If its a CD Audio, it will take info about it and search the local CDDB cache; if no info for this CD is found, it will query a remote CDDB server. If its a CD-ROM, it will traverse it recursively looking for playable files and the subdirectories containing songs will be treated as groups. Anyway, the list of songs will be stored in its internal database ready for playing.
umount: Unmounts the CD, and ejects it.
xmount: A combination of the previous two. If CD is mounted, umount it, and vice-versa.
hd: Reads a directory from the hard disk (this directory must be defined in the config file to be used). It will be treated the same as a CD-ROM. This command can also be used to re-read the hard disk directory contents if it has been updated since ZoltanPlayer read it.
play: Starts playing the first song.
stop: Stops playing.
pause: Pauses / unpauses the currently playing song.
next-song: Moves to the next song and plays it.
prev-song: Move to the previous song and plays it.
goto-N: Moves to song number N and plays it.
next-group: Moves to the first song of the next group and plays it If no group is defined (as in Audio CDs), it restarts playing from the first song.
prev-group: Moves to the first song of the previous group and plays it.If no group is defined (as in Audio CDs), it restarts playing from the first song.
song-info: Returns information about the song being played in one line. This command can be used from a shell script to display the info on an LCD, a ticker or something like that.
vol-up: Pumps up the volume by 5%. Only operative if the sound card mixer is being used (see sample config file).
vol-down: Lowers the volume by 5%. Only operative if the sound card mixer is being used.
cd-info: Shows the current list of songs, and information about the current group and song being played, if any.
skip-N: disable the song number N (do not play it).
rest-N: enable the previously disabled song number N.
toggle: toggle the skip selection.
toggle-playlist: toggle the skip selection for those songs inside playlists.
shuffle: shuffle the playing order of songs.
unshuffle: get back to original sorting of songs (CD order for Audio CDs, or alphabetical ordering if song files from CDROMs or hard di
Enhancements:
- Support for CD cover images.
- First stable release.
<<lessThe optimal equipment for ZoltanPlayer is a CDROM-equipped computer directly connected to an amplifier or stereo. Its not a streaming server, nor a ripper, nor a simple HTTP+HTML interface jukebox (this could be done with a CGI). ZoltanPlayer integrates the controlling of CD insertion / eject with the capability of directly playing CD Audio and spawning external player for MP3 / Ogg Vorbis / whatever song files.
Current version is 1.0.0. This software only runs on Linux and its licensed under the GPL.
Here is a list of commands for ZoltanPlayer:
mount: Mounts the CD in the drive (closing it if necessary). If its a CD Audio, it will take info about it and search the local CDDB cache; if no info for this CD is found, it will query a remote CDDB server. If its a CD-ROM, it will traverse it recursively looking for playable files and the subdirectories containing songs will be treated as groups. Anyway, the list of songs will be stored in its internal database ready for playing.
umount: Unmounts the CD, and ejects it.
xmount: A combination of the previous two. If CD is mounted, umount it, and vice-versa.
hd: Reads a directory from the hard disk (this directory must be defined in the config file to be used). It will be treated the same as a CD-ROM. This command can also be used to re-read the hard disk directory contents if it has been updated since ZoltanPlayer read it.
play: Starts playing the first song.
stop: Stops playing.
pause: Pauses / unpauses the currently playing song.
next-song: Moves to the next song and plays it.
prev-song: Move to the previous song and plays it.
goto-N: Moves to song number N and plays it.
next-group: Moves to the first song of the next group and plays it If no group is defined (as in Audio CDs), it restarts playing from the first song.
prev-group: Moves to the first song of the previous group and plays it.If no group is defined (as in Audio CDs), it restarts playing from the first song.
song-info: Returns information about the song being played in one line. This command can be used from a shell script to display the info on an LCD, a ticker or something like that.
vol-up: Pumps up the volume by 5%. Only operative if the sound card mixer is being used (see sample config file).
vol-down: Lowers the volume by 5%. Only operative if the sound card mixer is being used.
cd-info: Shows the current list of songs, and information about the current group and song being played, if any.
skip-N: disable the song number N (do not play it).
rest-N: enable the previously disabled song number N.
toggle: toggle the skip selection.
toggle-playlist: toggle the skip selection for those songs inside playlists.
shuffle: shuffle the playing order of songs.
unshuffle: get back to original sorting of songs (CD order for Audio CDs, or alphabetical ordering if song files from CDROMs or hard di
Enhancements:
- Support for CD cover images.
- First stable release.
Download (0.036MB)
Added: 2006-07-20 License: GPL (GNU General Public License) Price:
1191 downloads
screen-scraper 3.0
screen-scraper is a tool for extracting data from Web sites. more>>
screen-scraper project is a tool used to extract data from web sites. You might use screen-scraper for the following purposes:
- Data Mining and Extraction
- Data Migration
- Application Integration
- Business Intelligence
- Web Task Automation
- Portal Components
- Meta-Searching
- Archiving
The screen-scraper application consists of two primary pieces:
- Workbench: A graphical user interface provides an intuitive approach that allows you to designate pages and specific pieces of information to be extracted.
- Server: After using the workbench to designate the data to be scraped, screen-scraper can be run in a server mode, much like a database. External applications can then connect to screen-scraper, which will pull data off of the designated web sites, then return them to the calling application. For example, you might build a web-based application using Active Server Pages (ASP) or PHP that invokes screen-scraper to search for products found on an external web site in real-time.
Additionally, screen-scraper can be started in a non-graphical mode from the command line such that it can be scheduled or invoked on-demand.
screen-scraper can automate many of the tasks typically required when scraping data from web pages, such as tracking cookies, logging in to web sites, and traversing search results pages.
Depending on the programming languages and platforms you most prefer, screen-scraper is likely to be familiar to you. screen-scraper contains an internal scripting engine that supports:
- VBScript
- JScript
- Perl
- Interpreted Java
- JavaScript
- Python
When invoking screen-scraper externally take your pick from the following languages:
- Java
- PHP
- Anything COM-based (such as Active Server Pages, Visual Basic, and Visual C++)
- .NET (both Microsoft-based and Mono)
- Cold Fusion
Enhancements:
- Several bugfixes and minor features have been added, including automatic backup of the database, enhanced HTML rendering and HTML stripping, fixing an error that caused duplicate scripts to appear at times on import, and fixing multiple errors relating to international character sets and non-ASCII characters.
<<less- Data Mining and Extraction
- Data Migration
- Application Integration
- Business Intelligence
- Web Task Automation
- Portal Components
- Meta-Searching
- Archiving
The screen-scraper application consists of two primary pieces:
- Workbench: A graphical user interface provides an intuitive approach that allows you to designate pages and specific pieces of information to be extracted.
- Server: After using the workbench to designate the data to be scraped, screen-scraper can be run in a server mode, much like a database. External applications can then connect to screen-scraper, which will pull data off of the designated web sites, then return them to the calling application. For example, you might build a web-based application using Active Server Pages (ASP) or PHP that invokes screen-scraper to search for products found on an external web site in real-time.
Additionally, screen-scraper can be started in a non-graphical mode from the command line such that it can be scheduled or invoked on-demand.
screen-scraper can automate many of the tasks typically required when scraping data from web pages, such as tracking cookies, logging in to web sites, and traversing search results pages.
Depending on the programming languages and platforms you most prefer, screen-scraper is likely to be familiar to you. screen-scraper contains an internal scripting engine that supports:
- VBScript
- JScript
- Perl
- Interpreted Java
- JavaScript
- Python
When invoking screen-scraper externally take your pick from the following languages:
- Java
- PHP
- Anything COM-based (such as Active Server Pages, Visual Basic, and Visual C++)
- .NET (both Microsoft-based and Mono)
- Cold Fusion
Enhancements:
- Several bugfixes and minor features have been added, including automatic backup of the database, enhanced HTML rendering and HTML stripping, fixing an error that caused duplicate scripts to appear at times on import, and fixing multiple errors relating to international character sets and non-ASCII characters.
Download (66MB)
Added: 2007-01-15 License: Freeware Price:
599 downloads
RumAVL 2.0.2
RumAVL is a C implementation of a Threaded AVL Tree. more>>
RumAVL is a C implementation of a Threaded AVL Tree. An AVL Tree is a self- balancing binary search tree, as described by Adelson-Velskii and Landis. Threading is a method of linking the unused links of leaves to the next node in sequence, making traversing the tree easier.
RumAVL provides a opaque sorting and/or storage layer, hiding you from the details of maintaining an AVL tree, while giving you considerable control most operations.
RumAVL is a dictionary data type, providing indexed insertion and lookup, based on a key. RumAVL library supports values and keys of any type.
Main features:
- Can hold keys and data of any type, and any size
- Unlimited amount of nodes and unlimited tree height
- ANSI C/C99 compatible. Compiles cleanly under "gcc -W -Wall -pedantic"
- Portable - used no platform specific calls
- User defined memory handling functions
- User defined callback functions or "hooks" before any delete or overwrite operations
- Safe and reliable tree traversing
Enhancements:
- The efficiency of delete operations on nodes that have children on both sides was improved by replacing the node to be deleted by its innermost child in the heavier subtree.
- This is opposed to the previous method of rotating the node to be deleted until it was a (semi) leaf.
<<lessRumAVL provides a opaque sorting and/or storage layer, hiding you from the details of maintaining an AVL tree, while giving you considerable control most operations.
RumAVL is a dictionary data type, providing indexed insertion and lookup, based on a key. RumAVL library supports values and keys of any type.
Main features:
- Can hold keys and data of any type, and any size
- Unlimited amount of nodes and unlimited tree height
- ANSI C/C99 compatible. Compiles cleanly under "gcc -W -Wall -pedantic"
- Portable - used no platform specific calls
- User defined memory handling functions
- User defined callback functions or "hooks" before any delete or overwrite operations
- Safe and reliable tree traversing
Enhancements:
- The efficiency of delete operations on nodes that have children on both sides was improved by replacing the node to be deleted by its innermost child in the heavier subtree.
- This is opposed to the previous method of rotating the node to be deleted until it was a (semi) leaf.
Download (0.021MB)
Added: 2006-11-15 License: MIT/X Consortium License Price:
1073 downloads
UTIN Firewall script
UTIN Firewall script project is a script for Linux 2.4.x and iptables. more>>
UTIN Firewall script project is a script for Linux 2.4.x and iptables.
###########
# Configuration options, these will speed you up getting this script to
# work with your own setup.
#
# your LANs IP range and localhost IP. /24 means to only use the first 24
# bits of the 32 bit IP adress. the same as netmask 255.255.255.0
#
# INET_IP is used by me to allow myself to do anything to myself, might
# be a security risc but sometimes I want this. If you dont have a static
# IP, I suggest not using this option at all for now but its still
# enabled per default and will add some really nifty security bugs for all
# those who skips reading the documentation=)
LAN_IP="192.168.0.2"
LAN_BCAST_ADRESS="192.168.0.255"
LAN_IFACE="eth1"
LO_IFACE="lo"
LO_IP="127.0.0.1"
INET_IP="194.236.50.155"
INET_IFACE="eth0"
IPTABLES="/usr/local/sbin/iptables"
#########
# Load all required IPTables modules
#
#
# Needed to initially load modules
#
/sbin/depmod -a
#
# Adds some iptables targets like LOG, REJECT and MASQUARADE.
#
/sbin/modprobe ipt_LOG
#/sbin/modprobe ipt_REJECT
/sbin/modprobe ipt_MASQUERADE
#
# Support for owner matching
#
#/sbin/modprobe ipt_owner
#
# Support for connection tracking of FTP and IRC.
#
#/sbin/modprobe ip_conntrack_ftp
#/sbin/modprobe ip_conntrack_irc
#
# Enable ip_forward, this is critical since it is turned off as defaul in
# Linux.
#
echo "1" > /proc/sys/net/ipv4/ip_forward
#
# Dynamic IP users:
#
#echo "1" > /proc/sys/net/ipv4/ip_dynaddr
#
# Enable simple IP Forwarding and Network Address Translation
#
$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP
#
# Set default policies for the INPUT, FORWARD and OUTPUT chains
#
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
#
# bad_tcp_packets chain
#
# Take care of bad TCP packets that we dont want.
#
$IPTABLES -N bad_tcp_packets
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG
--log-prefix "New not syn:"
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP
#
# Do some checks for obviously spoofed IPs
#
$IPTABLES -A bad_tcp_packets -i $INET_IFACE -s 192.168.0.0/16 -j DROP
$IPTABLES -A bad_tcp_packets -i $INET_IFACE -s 10.0.0.0/8 -j DROP
$IPTABLES -A bad_tcp_packets -i $INET_IFACE -s 172.16.0.0/12 -j DROP
$IPTABLES -A bad_tcp_packets -i $LAN_IFACE ! -s 192.168.0.0/16 -j DROP
#
# Bad TCP packets we dont want
#
$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets
#
# Accept the packets we actually want to forward between interfaces.
#
$IPTABLES -A FORWARD -p tcp --dport 21 -i $LAN_IFACE -j ACCEPT
$IPTABLES -A FORWARD -p tcp --dport 80 -i $LAN_IFACE -j ACCEPT
$IPTABLES -A FORWARD -p tcp --dport 110 -i $LAN_IFACE -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG
--log-level DEBUG --log-prefix "IPT FORWARD packet died: "
#
# Create separate chains for ICMP, TCP and UDP to traverse
#
$IPTABLES -N icmp_packets
$IPTABLES -N tcp_packets
$IPTABLES -N udpincoming_packets
#
# The allowed chain for TCP connections
#
$IPTABLES -N allowed
$IPTABLES -A allowed -p TCP --syn -j ACCEPT
$IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED
-j ACCEPT
$IPTABLES -A allowed -p TCP -j DROP
#
# ICMP rules
#
# Changed rules totally
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT
#
# TCP rules
#
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 21 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 22 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 113 -j allowed
#
# UDP ports
#
$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --source-port 53 -j ACCEPT
$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --source-port 123 -j ACCEPT
$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --source-port 2074 -j ACCEPT
$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --source-port 4000 -j ACCEPT
#
# INPUT chain
#
# Bad TCP packets we dont want
#
$IPTABLES -A INPUT -p tcp -j bad_tcp_packets
#
# Rules for incoming packets from anywhere
#
$IPTABLES -A INPUT -p ICMP -j icmp_packets
$IPTABLES -A INPUT -p TCP -j tcp_packets
$IPTABLES -A INPUT -p UDP -j udpincoming_packets
#
# Rules for special networks not part of the Internet
#
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED,RELATED
-j ACCEPT
$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3
-j LOG --log-level DEBUG --log-prefix "IPT INPUT packet died: "
#
# OUTPUT chain
#
#
# Bad TCP packets we dont want
#
$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets
$IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $INET_IP -j ACCEPT
$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3
-j LOG --log-level DEBUG --log-prefix "IPT OUTPUT packet died: "
<<less###########
# Configuration options, these will speed you up getting this script to
# work with your own setup.
#
# your LANs IP range and localhost IP. /24 means to only use the first 24
# bits of the 32 bit IP adress. the same as netmask 255.255.255.0
#
# INET_IP is used by me to allow myself to do anything to myself, might
# be a security risc but sometimes I want this. If you dont have a static
# IP, I suggest not using this option at all for now but its still
# enabled per default and will add some really nifty security bugs for all
# those who skips reading the documentation=)
LAN_IP="192.168.0.2"
LAN_BCAST_ADRESS="192.168.0.255"
LAN_IFACE="eth1"
LO_IFACE="lo"
LO_IP="127.0.0.1"
INET_IP="194.236.50.155"
INET_IFACE="eth0"
IPTABLES="/usr/local/sbin/iptables"
#########
# Load all required IPTables modules
#
#
# Needed to initially load modules
#
/sbin/depmod -a
#
# Adds some iptables targets like LOG, REJECT and MASQUARADE.
#
/sbin/modprobe ipt_LOG
#/sbin/modprobe ipt_REJECT
/sbin/modprobe ipt_MASQUERADE
#
# Support for owner matching
#
#/sbin/modprobe ipt_owner
#
# Support for connection tracking of FTP and IRC.
#
#/sbin/modprobe ip_conntrack_ftp
#/sbin/modprobe ip_conntrack_irc
#
# Enable ip_forward, this is critical since it is turned off as defaul in
# Linux.
#
echo "1" > /proc/sys/net/ipv4/ip_forward
#
# Dynamic IP users:
#
#echo "1" > /proc/sys/net/ipv4/ip_dynaddr
#
# Enable simple IP Forwarding and Network Address Translation
#
$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP
#
# Set default policies for the INPUT, FORWARD and OUTPUT chains
#
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
#
# bad_tcp_packets chain
#
# Take care of bad TCP packets that we dont want.
#
$IPTABLES -N bad_tcp_packets
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG
--log-prefix "New not syn:"
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP
#
# Do some checks for obviously spoofed IPs
#
$IPTABLES -A bad_tcp_packets -i $INET_IFACE -s 192.168.0.0/16 -j DROP
$IPTABLES -A bad_tcp_packets -i $INET_IFACE -s 10.0.0.0/8 -j DROP
$IPTABLES -A bad_tcp_packets -i $INET_IFACE -s 172.16.0.0/12 -j DROP
$IPTABLES -A bad_tcp_packets -i $LAN_IFACE ! -s 192.168.0.0/16 -j DROP
#
# Bad TCP packets we dont want
#
$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets
#
# Accept the packets we actually want to forward between interfaces.
#
$IPTABLES -A FORWARD -p tcp --dport 21 -i $LAN_IFACE -j ACCEPT
$IPTABLES -A FORWARD -p tcp --dport 80 -i $LAN_IFACE -j ACCEPT
$IPTABLES -A FORWARD -p tcp --dport 110 -i $LAN_IFACE -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG
--log-level DEBUG --log-prefix "IPT FORWARD packet died: "
#
# Create separate chains for ICMP, TCP and UDP to traverse
#
$IPTABLES -N icmp_packets
$IPTABLES -N tcp_packets
$IPTABLES -N udpincoming_packets
#
# The allowed chain for TCP connections
#
$IPTABLES -N allowed
$IPTABLES -A allowed -p TCP --syn -j ACCEPT
$IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED
-j ACCEPT
$IPTABLES -A allowed -p TCP -j DROP
#
# ICMP rules
#
# Changed rules totally
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT
#
# TCP rules
#
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 21 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 22 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 113 -j allowed
#
# UDP ports
#
$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --source-port 53 -j ACCEPT
$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --source-port 123 -j ACCEPT
$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --source-port 2074 -j ACCEPT
$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --source-port 4000 -j ACCEPT
#
# INPUT chain
#
# Bad TCP packets we dont want
#
$IPTABLES -A INPUT -p tcp -j bad_tcp_packets
#
# Rules for incoming packets from anywhere
#
$IPTABLES -A INPUT -p ICMP -j icmp_packets
$IPTABLES -A INPUT -p TCP -j tcp_packets
$IPTABLES -A INPUT -p UDP -j udpincoming_packets
#
# Rules for special networks not part of the Internet
#
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED,RELATED
-j ACCEPT
$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3
-j LOG --log-level DEBUG --log-prefix "IPT INPUT packet died: "
#
# OUTPUT chain
#
#
# Bad TCP packets we dont want
#
$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets
$IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $INET_IP -j ACCEPT
$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3
-j LOG --log-level DEBUG --log-prefix "IPT OUTPUT packet died: "
Download (MB)
Added: 2007-02-13 License: GPL (GNU General Public License) Price:
985 downloads
GCC Introspector 0.7
GCC Introspector is a Perl/RDF/XML/SQL interface to the GNU Compiler Collection. more>>
The Introspector enables the programming tools that deal with source code such as the compiler to communicate in a standard and neutral manner reducing the accidental cost of programming.
Like a telephone switchboard connects many parties who might wish to talk to each other, the Introspector allows multiple consumers and producers of data about software to quickly and painlessly transfer information to each other.
This data about software, or meta-data is read and written in and out of existing software tools via a standardized plug-in interface. Each producer has its own flavour of data and format of data that it stores about your software, and the introspector allows for each software to speak its native language.
The Introspector plug ins act analogous to network cards in an ethernet allowing for broadcasting of the meta-data to the network of consumers.
The usage of RDF or Resources Description Format as the underlying representation is of essential importance. RDF is the foundation of the next generation of the internet, the Semantic Web where hypertext links is replaced by meaningful references to resources of type and quality.
The introspector uses the excellent Redland RDF Application Framework for parsing/serializing, storing/retrieving and querying/traversing the RDF data. The Berkley DB storage mechanism provides an efficent indexing system, and the SWIG Simplified Wrapper Interface Generator provides native langauge interfaces for all major programming systems.
The GCC interface uses Redland to create repositories of data that can be processed by any tool needed. Experiments have been made with compiling this graph data into arrays, so called "ICE Cubes" that can be traversed even quicker than the redland database.
This new technology when available will be able to be used from the same introspector API that gives access to Redland.
<<lessLike a telephone switchboard connects many parties who might wish to talk to each other, the Introspector allows multiple consumers and producers of data about software to quickly and painlessly transfer information to each other.
This data about software, or meta-data is read and written in and out of existing software tools via a standardized plug-in interface. Each producer has its own flavour of data and format of data that it stores about your software, and the introspector allows for each software to speak its native language.
The Introspector plug ins act analogous to network cards in an ethernet allowing for broadcasting of the meta-data to the network of consumers.
The usage of RDF or Resources Description Format as the underlying representation is of essential importance. RDF is the foundation of the next generation of the internet, the Semantic Web where hypertext links is replaced by meaningful references to resources of type and quality.
The introspector uses the excellent Redland RDF Application Framework for parsing/serializing, storing/retrieving and querying/traversing the RDF data. The Berkley DB storage mechanism provides an efficent indexing system, and the SWIG Simplified Wrapper Interface Generator provides native langauge interfaces for all major programming systems.
The GCC interface uses Redland to create repositories of data that can be processed by any tool needed. Experiments have been made with compiling this graph data into arrays, so called "ICE Cubes" that can be traversed even quicker than the redland database.
This new technology when available will be able to be used from the same introspector API that gives access to Redland.
Download (0.012MB)
Added: 2005-04-18 License: GPL (GNU General Public License) Price:
1652 downloads
XML::Simple::Tree 0.03
XML::Simple::Tree is a tree object extension for XML::Simple data structures. more>>
XML::Simple::Tree is a tree object extension for XML::Simple data structures.
SYNOPSIS
## script 1
## create XML::Simple::Tree object and do a preorder traversal
## create XML::Simple::Tree object from an xml document ($xml_file)
my $xml_obj = XML::Simple::Tree->new(file => directory.xml,
node_key => dir,
target_key => name);
## sub set_do_node() method takes subroutine reference to be executed at current node
$xml_obj->set_do_node(
sub {
my $self = $xml_obj;
my $cnode = $self->get_cnode();
my $level = $self->get_level();
my $padding = * x ($level + 1);
print "$padding$cnode->{name}[0]n";
}
);
## sub set_do_leaf() method takes subroutine reference to be executed at leaf node
$xml_obj->set_do_leaf(
sub {
my $self = $xml_obj;
print "n";
}
);
## Tree pre order traversal method that executes do_node() at each node and do_leaf() at each leaf
$xml_obj->traverse();
## script 2
## find a node and retrieve a parameter.
my $xml_obj =
XML::Simple::Tree->new(
file => $xml_file,
node_key => directory,
target_key => name
);
my $want_node = $xmlObj->find_node($target_directory);
my $mtime = $want_node->{mtime}[0];
## script 3
## find a node and cut (remove) it from tree.
my $cut_name = bin;
my $mainXml =
XML::Simple::Tree->new( file => $xml_file,
node_key => directory,
target_key => name);
$mainXml->cut_node($cut_name);
## script 4
## take XML::Simple::Tree object and paste it into a target node of another
## convert it back to xml
my $target_dir = xxx;
my $cut_tree =
XML::Simple::Tree->new(file => $cut_xml_file,
node_key => directory,
target_key => name);
$config_tree->paste_node($target_dir, $cut_tree->get_cnode()->{directory}[0]);
## convert to xml
my $xml = $config_tree->toXML();
## Additional examples can be found in the included tests.
This module extends XML::Simple by taking the data structure returned by XML::Simple::XMLin($xml_file, forcearray => 1) and putting it in a class complete with tree manipulation and traversal methods. Important to know is that XMLin is called with the option ForceArray => 1. This option forces nested elements to be represented as arrays even when there is only one.
<<lessSYNOPSIS
## script 1
## create XML::Simple::Tree object and do a preorder traversal
## create XML::Simple::Tree object from an xml document ($xml_file)
my $xml_obj = XML::Simple::Tree->new(file => directory.xml,
node_key => dir,
target_key => name);
## sub set_do_node() method takes subroutine reference to be executed at current node
$xml_obj->set_do_node(
sub {
my $self = $xml_obj;
my $cnode = $self->get_cnode();
my $level = $self->get_level();
my $padding = * x ($level + 1);
print "$padding$cnode->{name}[0]n";
}
);
## sub set_do_leaf() method takes subroutine reference to be executed at leaf node
$xml_obj->set_do_leaf(
sub {
my $self = $xml_obj;
print "n";
}
);
## Tree pre order traversal method that executes do_node() at each node and do_leaf() at each leaf
$xml_obj->traverse();
## script 2
## find a node and retrieve a parameter.
my $xml_obj =
XML::Simple::Tree->new(
file => $xml_file,
node_key => directory,
target_key => name
);
my $want_node = $xmlObj->find_node($target_directory);
my $mtime = $want_node->{mtime}[0];
## script 3
## find a node and cut (remove) it from tree.
my $cut_name = bin;
my $mainXml =
XML::Simple::Tree->new( file => $xml_file,
node_key => directory,
target_key => name);
$mainXml->cut_node($cut_name);
## script 4
## take XML::Simple::Tree object and paste it into a target node of another
## convert it back to xml
my $target_dir = xxx;
my $cut_tree =
XML::Simple::Tree->new(file => $cut_xml_file,
node_key => directory,
target_key => name);
$config_tree->paste_node($target_dir, $cut_tree->get_cnode()->{directory}[0]);
## convert to xml
my $xml = $config_tree->toXML();
## Additional examples can be found in the included tests.
This module extends XML::Simple by taking the data structure returned by XML::Simple::XMLin($xml_file, forcearray => 1) and putting it in a class complete with tree manipulation and traversal methods. Important to know is that XMLin is called with the option ForceArray => 1. This option forces nested elements to be represented as arrays even when there is only one.
Download (0.007MB)
Added: 2006-09-07 License: Perl Artistic License Price:
1144 downloads
XML Parse Library 0.50
XML-Parse library is a lightweight set of re-usable functions for general purpose parsing, checking, and creating xml files. more>>
XML-Parse library is a lightweight set of re-usable functions for general purpose parsing, checking, and creating xml files. It can support stream-oriented, SAX or DOM parsing styles, and includes an optional xsd schema validator and graphical schema generator.
It supports all valid XML, and includes checking for validity. This library has minimal dependencies, and is totally self-contained. XML Parse Library project is written in C and is both speed and memory efficient, and is simple to use. Primary core functions have been posted, and additional advanced and useful XML-related utilities will be added. Released under MIT License.
The XML-Parse library contains functions for parsing and/or creating xml files in a variety of ways. You should use whichever set makes sense for your needs. The functions support the following alternative ways of working with XML files:
- Read whole xml-files into a tokenized tree-structure in memory, and then operate on, traverse, access, or further decode values out of the tree. Your custom application code is usually required to access and operate on the tokenized-values.
- Read xml-files, parse and interpret them as they are being read. Your custom application-specific code can be interspersed with the re-usable parsing calls to interpret, convert, operate-on or store values immediately as input-stream is read, instead of storing in an intermediate tokenized-tree structure. This method reduce time and memory requirements, and supports streaming operations.
- Build xml-tree structures with convenient reusable routines from data in your application, and or modify values in read-in trees.
- Write-out valid xml-files automatically from xml-trees that were constructed or read-into memory by your application.
- Check xml-trees against an arbitrary xml schema definition (XSD).
<<lessIt supports all valid XML, and includes checking for validity. This library has minimal dependencies, and is totally self-contained. XML Parse Library project is written in C and is both speed and memory efficient, and is simple to use. Primary core functions have been posted, and additional advanced and useful XML-related utilities will be added. Released under MIT License.
The XML-Parse library contains functions for parsing and/or creating xml files in a variety of ways. You should use whichever set makes sense for your needs. The functions support the following alternative ways of working with XML files:
- Read whole xml-files into a tokenized tree-structure in memory, and then operate on, traverse, access, or further decode values out of the tree. Your custom application code is usually required to access and operate on the tokenized-values.
- Read xml-files, parse and interpret them as they are being read. Your custom application-specific code can be interspersed with the re-usable parsing calls to interpret, convert, operate-on or store values immediately as input-stream is read, instead of storing in an intermediate tokenized-tree structure. This method reduce time and memory requirements, and supports streaming operations.
- Build xml-tree structures with convenient reusable routines from data in your application, and or modify values in read-in trees.
- Write-out valid xml-files automatically from xml-trees that were constructed or read-into memory by your application.
- Check xml-trees against an arbitrary xml schema definition (XSD).
Download (0.011MB)
Added: 2007-03-23 License: MIT/X Consortium License Price:
947 downloads
HTML::TreeBuilder 3.23
HTML::TreeBuilder is a parser that builds a HTML syntax tree. more>>
HTML::TreeBuilder is a parser that builds a HTML syntax tree.
SYNOPSIS
foreach my $file_name (@ARGV) {
my $tree = HTML::TreeBuilder->new; # empty tree
$tree->parse_file($file_name);
print "Hey, heres a dump of the parse tree of $file_name:n";
$tree->dump; # a method we inherit from HTML::Element
print "And here it is, bizarrely rerendered as HTML:n",
$tree->as_HTML, "n";
# Now that were done with it, we must destroy it.
$tree = $tree->delete;
}
(This class is part of the HTML::Tree dist.)
This class is for HTML syntax trees that get built out of HTML source. The way to use it is to:
1. start a new (empty) HTML::TreeBuilder object,
2. then use one of the methods from HTML::Parser (presumably with $tree->parse_file($filename) for files, or with $tree->parse($document_content) and $tree->eof if youve got the content in a string) to parse the HTML document into the tree $tree.
(You can combine steps 1 and 2 with the "new_from_file" or "new_from_content" methods.)
2b. call $root->elementify() if you want.
3. do whatever you need to do with the syntax tree, presumably involving traversing it looking for some bit of information in it,
4. and finally, when youre done with the tree, call $tree->delete() to erase the contents of the tree from memory. This kind of thing usually isnt necessary with most Perl objects, but its necessary for TreeBuilder objects. See HTML::Element for a more verbose explanation of why this is the case.
<<lessSYNOPSIS
foreach my $file_name (@ARGV) {
my $tree = HTML::TreeBuilder->new; # empty tree
$tree->parse_file($file_name);
print "Hey, heres a dump of the parse tree of $file_name:n";
$tree->dump; # a method we inherit from HTML::Element
print "And here it is, bizarrely rerendered as HTML:n",
$tree->as_HTML, "n";
# Now that were done with it, we must destroy it.
$tree = $tree->delete;
}
(This class is part of the HTML::Tree dist.)
This class is for HTML syntax trees that get built out of HTML source. The way to use it is to:
1. start a new (empty) HTML::TreeBuilder object,
2. then use one of the methods from HTML::Parser (presumably with $tree->parse_file($filename) for files, or with $tree->parse($document_content) and $tree->eof if youve got the content in a string) to parse the HTML document into the tree $tree.
(You can combine steps 1 and 2 with the "new_from_file" or "new_from_content" methods.)
2b. call $root->elementify() if you want.
3. do whatever you need to do with the syntax tree, presumably involving traversing it looking for some bit of information in it,
4. and finally, when youre done with the tree, call $tree->delete() to erase the contents of the tree from memory. This kind of thing usually isnt necessary with most Perl objects, but its necessary for TreeBuilder objects. See HTML::Element for a more verbose explanation of why this is the case.
Download (0.12MB)
Added: 2006-12-20 License: Perl Artistic License Price:
1042 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 traverse 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