A.R.S.E. is a program which automatically sends command scripts (rules) to your router (or NAS, Managed Switch, IP Camera, Access Point, or whatever). Essentially, it does automated, scriptable telnet. You can setup or tweak your device with a click! Although originally designed to configure Voyager and compatible routers, A.R.S.E. now works with ALL devices that support telnet.
I have found the Automatic Router Scripting Engine invaluable when tweaking my broadband router for maximum download speeds. Doubling your DSL Line Rate is possible (my operator expects me to get no more than 4000 kbps, right now we're sitting happily at 9826 kbps!), but not without a lot of trial-and-error!
Wouldn't it be great to be able to quickly try out new configurations, and crucially, switch back to the old setup when our tests fail? Enter A.R.S.E., which makes tinkering simple and quick.
Setup..
When you first launch A.R.S.E. it creates a folder in your user data folder, and creates another folder inside that for a default device (as well as its default ini file with global settings)..
Here are the currently available (ARSE.ini) preferences. Coloured entries cannot be set from the GUI, so if you want to alter those, hack your ini file..
[ARSE]
current_device=DSL-2680
autosave_prefs=true
autoupdate_list=true
update_frequency=5
permanent_delete=false
sleep_time=300 (time to wait between sending commands to device, in milliseconds default = 300)log_level=2 (if you want to see output (next pref), leave this set to 2 - the default**)
show_output=true
confirm_drop=true (confirmation of drag-and-drops scripts)do_debug=false (set to true to have a debug file left in the working dir)log_file= (this is best left blank - logs will be created in <data folder>\<device>\logs)editor=notepad.exe (enter the path to your own favourite text editor - for logs and ini files)
associate_files=true
** 0 = no logging, 1 = log authentication/login only, 2 = log all responses (the default).
Inside the default device folder, is a device.ini file, with settings and presets for that specific device. You can rename "default" to whatever you like, and create other folders next to it, for other devices, e.g..
These devices are then available from a drop-down menu.
You can switch devices from the drop-down menu, and ARSE will re-launch itself with the new device's scripts.
ARSE remembers window settings for each individual device (including the progress dialog and log output window). You can run multiple copies, each set just-so, remembering their own window sizes and positions.
Inside device.ini (the device settings) you can have four sections. A main [ARSE] section where you can override certain global prefs (those which make sense to be device-specific - changing these in the GUI will set these for the device), as well as three other sections.
Easier to give you an example - this is for a D-Link DSL-2680:
[ARSE]
log_level=2
show_output=true
sleep_time=400
log_file=
autosave_prefs=true
[device]
ip=modem
user=
password=MyPa55word
reboot_string="" (optional: enter whatever command reboots the device - for scripts that require reboot)auth_checkstring="Password:" (optional - ARSE will look for this before sending the password)login_chunks=2 (default is 8 - which is the number of 1KiB blocks to retrieve for login responses)max_response=300 (maximum amount of data blocks to retrieve in a single response, in KiB. Default is 300 - plenty!)line_feed=LF (what type of Line Breaks to use, default is CRLF. You can also use LF or CR)
[view]
width=375
height=247
x=1242
y=197
prog_x=518
prog_y=8
show_log_x=1258
show_log_y=45
show_log_w=664
show_log_h=999
[selected]
DIAGNOSTICS=True
Automatic Tasks..
As well as its simple graphic interface, A.R.S.E. can operate command-line mode, so you can click a script anywhere and have it sent directly to the router. You can also drag-and-drop scripts directly onto A.R.S.E. - or a shortcut to it - and they will be sent immediately to the router via background telnet.
You can open your scripts folder from the A.R.S.E. scripts context menu (right-click any script in the list), though as you can add and delete scripts from right from within A.R.S.E., there shouldn't be much need to interact with the folder manually.
Command-line mode..
A.R.S.E. accepts script on the command line, which means you can drag-and-drop scripts onto the A.R.S.E. icon and A.R.S.E. will telnet them immediately to your router (and then exit). Or you can simply click a script anywhere in Windows Explorer and it will be sent to your router (so long as you have .arse files associated with A.R.S.E - you can do that from the A.R.S.E. system tray menu).
In a similar way, you can schedule script to be run at any time with, perhaps the Windows® built-in "Scheduled Tasks", or some other scheduling/macro software. There's no need to leave A.R.S.E. running, but if you do, it uses very little resources, and can be toggled by its tray icon (left-click).
The currently available scripts are also available for running from A.R.S.E's system tray menu.
Note: in command-line mode, you will not be asked for any login preferences - unless the device.ini file is missing, i.e.. the first time you run A.R.S.E..
If A.R.S.E. is launched without any scripts (i.e.. you click the application, or a shortcut on your desktop, Start Menu item, etc.),
it will present you with its simple graphic user interface and your current script collection. I put more controls into this as I go along, so check back often for the latest version.
In GUI mode, you can drag and drop scripts into the list, to add them to your collection (one at a time), and also delete scripts from your collection, as well as do a few more things; right-click the list.
It's okay to run scripts from the command-line or schedule while the A.R.S.E. GUI is running, they won't interfere with each other.
Scripts are available for all sorts of things, mainly port-forwarding rules for p2p applications, ftp servers and the like, though technically, any valid telnet command can be placed in an A.R.S.E. script. Feel free to mail me your own pet scripts, and I'll chuck them here for all to use.
For scripters..
As mentioned, A.R.S.E. scripts are simply lists of valid telnet commands, the exact same commands one would enter in a telnet session with your device. A.R.S.E. scripts can also contain comments. Any line beginning with semicolon ";" or hash "#" is considered a comment.
The line format can be PC (CRLF - "\r\n") or UNIX (LF - "\n") line breaks, but NOT Mac (CR - "\r") sorree! - if your script jumps immediately to 100% progress, check your line-breaks.
You can also embed "progress directives" in your scripts, like this..
[I am a progress directive]
which will be used as the text under the progress bar while the script runs. So, if you have a big script, you can keep users informed about what section is currently being processed. Peek inside "Basic-Voyager-205-setup.arse" with any decent text editor for example usage.
Note: If your script requires that the router do a reboot at the end of you script, add reboot at the end of your script (after commit, for Voyager routers). Don't worry about multiple scripts sending multiple reboot (or commit) commands (and the long wait that entails); A.R.S.E. stores these commands and performs them only once, right at the end. If a reboot is required, A.R.S.E. will warn you first, and give you the option to defer that, if needed.
Exit codes..
If you are running scripts via Explorer, the command-line, a scheduled task or similar mechanism, you can grab A.R.S.E's exit code, so you know exactly what happened.
There are only a few of these, for now. As follows..
0 = Normal Exit. OK.
-2 = Ini file not found.
-3 = Device not defined inside ini (prefs) file.
-15 = Login details incorrect.
-16 = Login aborted.
LIVE MD5+SHA1 Multi-Hashes.. # made with checksum.. 64-bit edition.
# from corz.org.. https://corz.org/windows/software/checksum/
#
#sha2#ARSE.zip#2026.11.02@11.40:12
138ddc0bfd02d4f348d486a83699bacf788f04d34e62dd06a3a52525ad7706d7 *ARSE.zip
And finally..
All this work is free as in beer, so help yourself!
And when you save yourself some precious hours, days and weeks, maybe you could buy me a beer!
If you dig my software, you might just love my new clock <- blatant plug
;o)
(or
retre - 23.10.07 6:49 pm
Great, thanks
VASILIS - 17.11.07 7:25 pm
thanks
PeterB - 17.01.08 9:55 am
Hey just downloaded arse lol love the sound of it haha then I downloaded the p2p and other scripts, ran those and now uTorrent says my port is forwarded properly thanks guys!
<3
eft - 03.02.08 3:50 pm
thanks
John - 13.02.08 9:35 pm
Thanx man
corz - 26.02.08 9:24 am
It's all good!
;o)
fnnr1 - 04.03.08 4:47 pm
the admin of the network closed my ports so now i cannot download with a torrent client
corz - 07.03.08 10:40 am
Well, erm, thanks for keeping us up-to-date!
;o)
(or
RichE - 12.03.08 12:18 pm
Hi Cor,
I've had a look through the arse source code and have a few ideas, to possibley make it abit more stream lined.
1. you store the variable in an .ini file, to stop people screwing the .ini file entries up, or editing it directly without using arse you could encyrpt the string and write it, arse could decrypt the string when needed
2. have you thought about using select...case for some of the button functions, then arse would ignore them when looking through the func list, thus speeding it up a little.
3. as you know me from the past RAD coding, you'll know that i'm a big fan of registry values for storage instead of .ini files, this would do away with the .ini file alltogether.
like i say just ideas, but would be nice to see what you think.
Regards
RichE
corz - 12.03.08 2:35 pm
Hi again!
I haven't worked on ARSE since I first made it, and probably never will again, not using a voyager router myself any more, you see. Some of the code if probably fairly inept - I think it was my first AutoIt app - but it works great, so I don't feel the need to replace any of it with better techniques I've learned since, I'm happy to leave my "AutoIt progression" out there!
Arse stores the ini in the user's folder, doesn't it? So encryption isn't really necessary. (there's an excellent debate or two about this logic on the FileZilla forum)
As for the registry, I am NOT a fan of storing anything there unless I really have to. I get religious about this elsewhere on-site, I'm sure. ini files are real and tangible. A user can open them, edit them, move them, and importantly, back them up. Even with sophisticated backup and recovery scripts (which I have), the registry is a pain in the arse (the other arse!).
Every application I now make uses plain text ini files. In fact, I've done quite a bit of AutoIt coding since last we spoke (I today noticed that ffe has been listed on the ffmpeg project page, w00t!), including a cool desktop clock, color picker, and more. Hit the newish Windows button in the top toolbar for more details. Most things are still getting updated when I come up with new features and such. Not ARSE, though.
But Hey! The source is freely available, so feel free to do whatever you like with it. If you fully document all your changes, thoroughly test it, and provide the source, I'll even put up a download here, with credits and all that.
One thing I would like to add to ARSE, is the ability to set the login search strings. Currently it looks for something that the Viking router says during the conversation (particular Viking responses), but it would be nice to be able to set that, so that ARSE would work with any router. I wasn't thinking big enough when I built it.
I've had reports of ARSE working well on pretty much all the Viking I based routers, which is good, but working on all routers, period, would be better.
Before you ask a question..
PLEASE remember, this page is about ARSE, which is FREE!
If you want to ask questions about routers, go here.
Hey Cheers!
If you dig my software, you might just love my new clock <- blatant plug
;o)
(or
Great, thanks
thanks
Hey just downloaded arse
<3
thanks
Thanx man
It's all good!
;o)
the admin of the network closed my ports so now i cannot download with a torrent client
Well, erm, thanks for keeping us up-to-date!
;o)
(or
Hi Cor,
I've had a look through the arse source code and have a few ideas, to possibley make it abit more stream lined.
1. you store the variable in an .ini file, to stop people screwing the .ini file entries up, or editing it directly without using arse you could encyrpt the string and write it, arse could decrypt the string when needed
2. have you thought about using select...case for some of the button functions, then arse would ignore them when looking through the func list, thus speeding it up a little.
3. as you know me from the past RAD coding, you'll know that i'm a big fan of registry values for storage instead of .ini files, this would do away with the .ini file alltogether.
like i say just ideas, but would be nice to see what you think.
Regards
RichE
Hi again!
I haven't worked on ARSE since I first made it, and probably never will again, not using a voyager router myself any more, you see. Some of the code if probably fairly inept - I think it was my first AutoIt app - but it works great, so I don't feel the need to replace any of it with better techniques I've learned since, I'm happy to leave my "AutoIt progression" out there!
Arse stores the ini in the user's folder, doesn't it? So encryption isn't really necessary. (there's an excellent debate or two about this logic on the FileZilla forum)
As for the registry, I am NOT a fan of storing anything there unless I really have to. I get religious about this elsewhere on-site, I'm sure. ini files are real and tangible. A user can open them, edit them, move them, and importantly, back them up. Even with sophisticated backup and recovery scripts (which I have), the registry is a pain in the arse (the other arse!).
Every application I now make uses plain text ini files. In fact, I've done quite a bit of AutoIt coding since last we spoke (I today noticed that ffe has been listed on the ffmpeg project page, w00t!), including a cool desktop clock, color picker, and more. Hit the newish Windows button in the top toolbar for more details. Most things are still getting updated when I come up with new features and such. Not ARSE, though.
But Hey! The source is freely available, so feel free to do whatever you like with it. If you fully document all your changes, thoroughly test it, and provide the source, I'll even put up a download here, with credits and all that.
One thing I would like to add to ARSE, is the ability to set the login search strings. Currently it looks for something that the Viking router says during the conversation (particular Viking responses), but it would be nice to be able to set that, so that ARSE would work with any router. I wasn't thinking big enough when I built it.
I've had reports of ARSE working well on pretty much all the Viking I based routers, which is good, but working on all routers, period, would be better.
Anyways, back to my prose..
;o)
(or