Jump to content
Sign in to follow this  
naught

Naught.Net

Recommended Posts

naught_net_logo.png

Current Version:

Windows 1.0.0.1 Alpha Release

Last Updated:

10/7/2013

Requirements:

Arma 2 1.09 | Arma 2 OA 1.62 | Arma 3 1.00

Community Based Addons 1.0.0

Download:

STABLE | DEVELOPMENT | MIRROR

SOURCE | REPOSITORY


About Naught.Net

What is Naught.Net?

Naught.Net is an extension-based (.dll) addon that extends the functionality of the Real Virtuality engine with multiple features accessed via an extensive API.

What features does Naught.Net offer?

Naught.Net offers many features, currently allowing for hashing (MD2, MD4, MD5, SHA1, and SHA256), regular expressions (regex-based matching, searching, and replacing), and file-downloading (this is handler-based and completely multi-threaded).

How does file-downloading in Naught.Net work?

Naught.Net uses handle-based multithreading to download files from local and remote networks. This works by requesting a file and downloading it asynchronously from the main Arma process while the SQF engine continually asks (per-frame) the extension if the download has finished. Once done, the extension will return the file (up to 1MB in size using truncating and chunking techniques; this is the limit due to security issues, so it may be increased later) as a [perfectly safe] string to the SQF engine which will then call the supplied handler code, passing the file as the primary _this variable.

What if I want a function that isn't yet apart of Naught.Net?

Request it here by posting a reply, and maybe it'll make its way into Naught.Net!

Where can I report issues about Naught.Net?

Post them up here as a reply to this thread, and I'll parse through them within 48 hours.

What are some of the possibilities with Naught.Net?

You can reference my post below for a brief overview on some ideas that I've had about this addon.


Technical Specifications

  • Multi-threaded handler-based support.
  • Chunking and truncating for nearly unlimited inter-communication (Extension to Arma) bandwidth.
  • Max concurrent threads: 10.
  • Max Download bandwidth per thread: 1 MB, Max Upload bandwidth per thread: 512 KB.
  • Download support for HTTP (POST & GET), HTTPS (POST & GET), FTP (untested), SSH (untested), and more.


Naught.Net ReadMe File

=====================================
Naught.Net
Version: 1.0.0.1
Release date: 10/7/2013
Author(s): Naught
Multiplayer compatible: Yes
=====================================

An unofficial addon for the PC game "Arma" by Bohemia Interactive.


=====================================
DESCRIPTION
=====================================

An extension-based (.dll) addon that extends the functionality of the Real Virtuality engine
with multiple features accessed via an extensive API detailed in the <FUNCTION INDEX> below.


=====================================
REQUIREMENTS
=====================================

Arma 2 - Version [1.09] - Bohemia Interactive
Arma 2: Operation Arrowhead - Version [1.62] - Bohemia Interactive
Arma 3 - Version [1.00] - Bohemia Interactive
CBA - Version b190 - CBA Team


=====================================
FUNCTION INDEX
=====================================

NOTE: All extension returns of the return data-type [Return] consist of either a string of the return data [string] on success,
an extension-internal handle [int] on multi-threaded applications (although by using the below functions this should not be
returned), an error [boolean false] on an extension-internal error, or a null data-type [Nil] on a null (or empty) return.
Data checks should be mandatory after a call to one of these functions.

NOTICE: All tilde (~) characters sent to the extension WILL BE REPLACED by the minus (-) character prior to the transfer.

----------------
COMMON FUNCTIONS
----------------

NDT_fnc_getVersion
Description:
	Get version of the Naught.Net extension (Naught.Net.dll).
Parameters:
	None
Return:
	Version [Return] (empty string if extension is unloaded).
Example:
	_version = [] call NDT_fnc_getVersion;

----------------
STRING FUNCTIONS
----------------

NDT_fnc_hashString
Description:
	Hash a string. Hash Types are: 0=MD2, 1=MD4, 2=MD5, 3=SHA1, 4=SHA256.
Parameters:
	0: Text [string],
	1: Hash Type [integer] (Optional).
Return:
	Hash [Return].
Example:
	_hash = ["hash this string", 3] call NDT_fnc_hashString;

NDT_fnc_regexMatch
Description:
	Check if text matches a given regular expression.
Parameters:
	0: Text [string],
	1: Regex [string].
Return:
	Encapsulated Boolean [Return] (ie. "true").
Example:
	_encapBool = ["subject", "(sub)(.*)"] call NDT_fnc_regexMatch;

NDT_fnc_regexSearch
Description:
	Search text for characters matching a regular expression.
Parameters:
	0: Text [string],
	1: Regex [string],
	2: Max Iterations [int] (Optional).
Return:
	Encapsulated Array [Return] (ie. "[['match1'], ['subMatch1', 'subMatch2']]").
Example:
	_encapArray = ["this subject, that submarine, every subsequence", "\\b(sub)([^ ]*)", 2] call NDT_fnc_regexSearch;

NDT_fnc_regexReplace
Description:
	Replace all characters matching a regular expression.
Parameters:
	0: Text [string],
	1: Regex [string],
	2: Replace With [string] (Reference http://www.cplusplus.com/reference/regex/match_replace/).
Return:
	New Text [Return].
Example:
	_newText = ["there is a subsequence in the string", "\\b(sub)([^ ]*)", "sub-$2"] call NDT_fnc_regexReplace;

-----------------
NETWORK FUNCTIONS
-----------------

NDT_fnc_newDownloadHandler
Description:
	Create a new download handler to download a file and call code.
Parameters:
	0: Address [string] ("protocol://address.domain:port"),
	1: Handler Code [Curly-Braces] (Passes download return as _this [Return]),
	2: TimeOut Seconds [int] (Optional),
	3: Post Data [string] (Optional).
Return:
	Handle to Asynchronous (Spawned) Code [script].
Example:
	_scriptHandle = ["https://www.google.com", {dl_data = _this;}, 30, "request=search"] call NDT_fnc_newDownloadHandler;


=====================================
KNOWN ISSUES
=====================================

None.


=====================================
VERSION HISTORY
=====================================

Version 1.0.0.1
- Initial Release


=====================================
LICENSE
=====================================

Copyright © 2013 Dylan Plecki <dylanplecki@gmail.com>
All rights reserved.

Naught.Net is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

Naught.Net is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.


=====================================
CONTACT DETAILS
=====================================

Dylan Plecki (Naught) can be contacted either through the UnitedOperations.Net forums as <Naught> or via email at <dylanplecki@gmail.com>


Planned Features

  • Get Real Time (with time zones).
  • XML / YAML Parser.
  • Database Support.
  • 2-Way Encryption Support.


Contact

Naught:

Edited by Naught

Share this post


Link to post
Share on other sites

sounds pretty cool Naught :)

unfortunately both download links are 404

please also provide the source as extension/DLLs are a security risk on use

Share this post


Link to post
Share on other sites
;2531161']sounds pretty cool Naught :)

unfortunately both download links are 404

please also provide the source as extension/DLLs are a security risk on use

The broken links were an unfortunate effect of my meddling with directories, but they're fixed now.

Also uploaded source and migrated to a faster host, links are updated in the original post :)

Edited by Naught

Share this post


Link to post
Share on other sites
Guest

Thanks for informing us about the release :cool:

Release frontpaged on the Armaholic homepage.

news_download_a2_4.png

Naught.Net v1.0.0.1

required_addons.png

For usage in Arma 2 / Arma 2: Operation Arrowhead:

Community Based Addons

For usage in Arma 3:

Community Based Addons A3

================================================

We have also "connected" these pages to your account on Armaholic.

This means in the future you will be able to maintain these pages yourself if you wish to do so. Once this new feature is ready we will contact you about it and explain

how things work and what options you have.

When you have any questions already feel free to PM or email me!

Share this post


Link to post
Share on other sites

For the benefit of us dummies, what would the practical applications of this add-on be?

Share this post


Link to post
Share on other sites

Naught,

Congrats on the release!

Awesome to have some regex capability with this.

What are you guys using it for? I'm assuming downloading of network based files... for config?

I'm interested in what you are doing around parsing. Are you aware of the CBA_fnc_parseYAML already? I'm personally looking to do JSON parsing in SQF. I already have an HTTP addon and file reading/writing addon complete for my mod. I also have get real time, get server name, get ip address and lots more. I'm using Addins for Scott W's Arma2Net addon.

Share this post


Link to post
Share on other sites
For the benefit of us dummies, what would the practical applications of this add-on be?
Naught,

Congrats on the release!

Awesome to have some regex capability with this.

What are you guys using it for? I'm assuming downloading of network based files... for config?

I'm interested in what you are doing around parsing. Are you aware of the CBA_fnc_parseYAML already? I'm personally looking to do JSON parsing in SQF. I already have an HTTP addon and file reading/writing addon complete for my mod. I also have get real time, get server name, get ip address and lots more. I'm using Addins for Scott W's Arma2Net addon.

I probably should have renamed the NDT_fnc_newDownloadHandler to NDT_fnc_newConnectionHandler to clarify what exactly it does.

With this addon, you can request completely dynamic files from a web server (ie. PHP, ASP, Java, etc.) for completely dynamic data. You can interact with MySQL and SQL servers via this method, you can get and save data with the GET and POST methods, you can connect to remote programs via the PORT option, and much more.

With this, you can enable inter-server communication (or even inter-game communication), you can store persistent data, you can connect Arma to web interfaces and stream data to it, and really you can do anything since it's connected to the web.

I've had a few ideas myself, like blocking players from playing on the server until they've created an account on our forums, or logging kills and deaths to a web server for fully persistent records, or by linking our NotePad addon to a web server for saving. We've even considered connecting Arma and SB Pro (a tank-based game) so that all actions in one game will be reenacted in another.

And for MSO's, you could stream to a web interface all data, or you could even make a real-time interactive web-based map of the area and stream player positions, names, health, etc. so people can see what's going on in the battlefield.

This addon is the stepping stone for things that were never possible before.

And also the hashing and regex features are more straight-forward so I'm not going to describe what they could do :)

Also Tupolov, I was considering adding file reading/writing and downloading larger files to disk but that creates a HUGE security risk, which would've be feasible for an addon which I'm hoping will be accessible to all types of servers and communities. Instead I kept it limited to strings and I used chunking to allow for up to 1 MB of data to be transfered (hard-coded, but may be changed in the future).

Edited by Naught

Share this post


Link to post
Share on other sites

Thanks for the explanation, Naught - sounds pretty amazing! It also sounds like something that will inspire yet more innovation. Can't wait to see what comes of it!

Share this post


Link to post
Share on other sites

Hi

please deliver demo missions this time

it will help people if it is not so much abstract

THX

Share this post


Link to post
Share on other sites

Hi, just throwing my 2 cents in, but you could create a sub-mod with a larger download option without being restricted to strings, then we could use it to download mods when we connect to a server running those mods by automatically having the game restart running the mod just downloaded and connecting back to the same server.

Share this post


Link to post
Share on other sites
Hi, just throwing my 2 cents in, but you could create a sub-mod with a larger download option without being restricted to strings, then we could use it to download mods when we connect to a server running those mods by automatically having the game restart running the mod just downloaded and connecting back to the same server.

I'm working on configurable download options (ie. max concurrent threads, max download/upload sizes, etc.) and download_to_file could be an option, but I'd focus on that after the next beta release with (hopeful) YAML and XML support with configurable extension options via a config.yml/xml.

But with the way Arma works, this process of downloading and restarting would have to be done in-game after the player joins, so they may take up a slot (and if the mods are too big this may take a long time). But personally I'd prefer to require a single mod which downloads script from a remote server, but I could still see the potential for dynamic images/sounds/music/configs/videos/etc.

Share this post


Link to post
Share on other sites

Im using Naught.Net to request a webpage that returns db rows in arma array format but naught.net doesnt seem to be chunking the data

Share this post


Link to post
Share on other sites

For dummies like me, could you explain what this is a bit more? What could I use this for, and what compelled you to create it? Is this only for advanced scripters, or is this something a novice could use as well?

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×