+ contrib/hbrun/hbrun.rc
+ Missed from prev commit.
! Enable mft/ver features only for msvc, bcc and mingw, the
rest will die various deaths.
* package/harb_win.rc
* Tweak a little to not cause most RC to die.
* contrib/hbnetio/utils/hbnetio/hbnetio.hbp
* contrib/hbrun/hbrun.hbp
* Enabled security options only on win platform.
* contrib/hbrun/hbrun.hbp
+ Added msvcarm option to avoid fatal compiler error in headers.c.
* contrib/hbrun/hbrun.prg
* contrib/hbrun/hbrun.hbp
+ contrib/hbrun/plugins.prg
+ Added plugin support.
+ Added hbnetio management console to hbrun, as plugin.
Use: "netio.<command> <params>" format to access it.
Or enter netio command domain with ".netio" and use
regular netio commands. Exit netio command domain with
"." command.
* package/winuni/mpkg_win_uni.bat
* package/winuni/mpkg_win_uni.nsi
* contrib/hbplist
- Stdalone hbnetio management console is not built or
included in distro anymore. Use hbrun.
* contrib/hbrun/hbrun.prg
* contrib/hbrun/hbrun.hbp
+ contrib/hbrun/headers.prg
* Moved headers to separate file.
* contrib/hbrun/pullext.prg
* Minor.
* contrib/hbnetio/utils/hbnetio/netioeng.prg
* contrib/hbnetio/utils/hbnetio/netiocon.prg
* Renamed entry function for console plugin.
+ contrib/hbnetio/utils/hbnetio/netioeng.prg
* contrib/hbnetio/utils/hbnetio/hbnetio.hbp
* contrib/hbnetio/utils/hbnetio/hbnetioc.hbp
* contrib/hbnetio/utils/hbnetio/netiocon.prg
* contrib/hbnetio/utils/hbnetio/netiocmd.prg
+ netio management client-side command handling moved to
a separate module and rewritten to act as a command
handler plugin. This makes it possible to move the
whole logic inside console hosts, f.e. hbrun.
* contrib/hbnetio/utils/hbnetio/netiocon.prg
+ Accepting notification events coming from the server
in a separate thread, so now they are realtime-ish
(it's poll). It's little rough around the edges yet.
* contrib/hbnetio/utils/hbnetio/hbnetioc.hbp
+ Enabled MT mode also for console client.
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
+ Send out 'shutdown' notifications to mgmnt clients.
* ChangeLog
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
! Set netio root data dir to 'data' subdir by default to
avoid overwriting anything in the daemon's own
directory (f.e. its settings)
! Set netio root data dir to invalid dir name ("*?:*?:")
to prevent management clients to create any files
on server. QUESTION: Is there a better way to prevent
RDD I/O redirection for given server session?
* contrib/hbnetio/utils/hbnetioq/netiosrq.prg
! Enabled: "Stop" a connection, either via toolbar icon or
context menu on a connection row in the browser.
% Fixed: to refresh browser every 3 seconds.
* src/common/hbverdsp.c
+ Instead of adding "(UNICODE)" marker in build info for UNICODE
builds, now it will add "(WINANSI)" for non-UNICODE builds.
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
* Using more hb_StrFormat()
* contrib/hbnetio/utils/hbnetio/netiocon.prg
* Tweak to one cmd help.
* utils/hbrun/hbrun.prg
* Formatting.
* contrib/hbnetio/utils/hbnetioq/netiosrq.prg
! Ebnabled to get information from netiosrv daemon.
Currently only connections info. Time interva to refresh
browser is 10 seconds currently. Still a lot to be
implemented based on latest features of netiosrv daemon.
A work-in-progress.
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
* contrib/hbnetio/utils/hbnetio/netiocon.prg
- Deleted filtering on client host name.
* contrib/hbnetio/utils/hbnetio/netiocon.prg
! Fixed RTE when there were no notifications.
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
+ Reworked and reenabled host name based filtering.
NOTE: Host name lookup is not implemented for win platforms
in hbsocket.
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
* contrib/hbnetio/utils/hbnetio/netiocon.prg
+ Resolved remaining TODOs regarding client notifications.
+ Added automatic deletion of (abnormally) disconnected clients
from notification list.
* Commented filter code dealing with host names until we find
out how to get those from IP.
* contrib/hbhttpd/core.prg
! English translation of one word.
* contrib/hbformat/hbformat.prg
! Added missing ASCAN() from list of functions.
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
* contrib/hbnetio/utils/hbnetio/netiocon.prg
+ Implemented notifications to management clients about
server side event, curently connection/disconnections.
Quite many TODOs are left, and since the console client
is ST yet, the display of server events is done after
processing a console command.
F.e. a GUI client can use such information to refresh
list of clients.
* contrib/hbnetio/utils/hbnetioq/netiosrq.prg
* Cleanups.
* contrib/hbnetio/utils/hbnetioq/netiosrq.prg
* Roughly reworked to act as management client UI.
I didn't touch any GUI logic.
+ Accept server port and password in ini file, which
is now named 'hbnetioq.exe.config'. This can also
be extended and fine tuned at will.
; To test, run it like the console client, f.e.:
hbnetio -adminpass=toptopsecret
hbnetioq -pass=toptopsecret
; NOTE: Only one RPC call is implemented, pls fill the rest,
plus some periodic refresh would have to implemented
for the browse. Pls see
contrib/hbnetio/utils/hbnetio/netiocon.prg
for possible RPC commands and returned values.
* contrib/hbnetio/utils/hbnetioq/netiosrq.prg
! Fixed casing in #include lines.
Please remember that case-sensitive file systems exist.
Patch by Tamas.
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
* contrib/hbnetio/utils/hbnetio/netiocon.prg
+ Added GPL license.
* contrib/hbnetio/utils/hbnetioq/netiosrq.prg
+ Added GPL license. (once the server code is
deleted and only the UI remains, this should
be updated)
* contrib/make.hbs
! Fixed to not define _HB_BUILD_ when doing a custom build
(explicitly passed .hbp file) in stdalone mode.
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
+ Enabled keepsort on the saved configuration hash.
* contrib/hbhpdf/harupdf.c
- Deleted wrapper to HPDF_PDFA_GENERATEID(), what rather seems
an internal function.
* Tweaked previous fix to HPDF_PDFA_SETPDFACONFORMANCE(), so that
now it's included in dynamic builds, just returning dummy result.
Still a pending TOFIX though, as it's not right that dynamic
and static version of the same lib works differently. Any tips
which way to choose? It would be great asking libharu developers
about whether HPDF_PDFA_SetPDFAConformance() is meant as a
public function.
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
* contrib/hbnetio/utils/hbnetio/netiocon.prg
+ Added RPC and console command to save filters.
They will be reloaded automatically when starting
up the server daemon.
* ChangeLog
! Fixed previous entry header.
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
+ Keep order of filter lists.
* utils/hbmk2/hbmk2.prg
! Use _hbmkcpp_<cFirstFile>.cpp (instead of _hbmkcpp.cpp) on
non MS-DOS platforms.
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
* contrib/hbnetio/utils/hbnetio/netiocon.prg
+ Added console commands to add/remove filters.
+ Added rpc and console commands to list filters.
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
+ Added client address filtering engine for both data and
management interface. It will do quick match against
IP, then wildcard match against IP, then quick host name match,
wildcard hostname match. Block filter has priority over
allow filter. It's possible to control via management RPC,
console UI not yet extended to use it. A lot of other
TODO is quickly generated by this feature, f.e. making
settings persistent, supporting IP subnet masks, etc.
I didn't test this at all, pls do.
* src/rtl/strmatch.c
! Typo in comment.
* contrib/hbnetio/utils/hbnetioq/hbnetioq.hbp
+ contrib/hbnetio/utils/hbnetioq/manageips.ui
* contrib/hbnetio/utils/hbnetioq/netiosrq.prg
* contrib/hbnetio/utils/hbnetioq/netiosrq.qrc
+ contrib/hbnetio/utils/hbnetioq/refresh.png
+ Implemented: activate/deactivate banning IPs from connecting
to server. This implementation provides for the -ini=cINIFile
command line switch. <cINIFile> contains the info about IPs.
User-interface to manage activations is via toolbar button
which allows to <Add><Delete><Save> IPs and also to flag
to activate/deactivate IPs on-the-go.
TODO: take use of console daemon by separating the user inetrface.
Hopefully by next week.
* contrib/make.hbs
+ Defined _HB_BUILD_=yes to tell .hbp files we're building
for a Harbour build.
* contrib/hbnetio/utils/hbnetio/hbnetioc.hbp
* contrib/hbformat/utils/hbformat.hbp
+ Tweak to not build in -shared mode when directly building
the .hbp file (and not as part of Harbour build).
* contrib/hbnetio/utils/hbnetioq/hbnetioq.hbp
* contrib/hbide/hbide.hbp
+ Added tweak to build in shared mode when building as
part of Harbour build. This will make the distro size
noticeably smaller.
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
* contrib/hbnetio/utils/hbnetio/netiocon.prg
+ Show server config feature converted to client-server.
* contrib/hbplist
+ Added hbnetioc to tools automatically built.
This is management console for hbnetio deamon.
* contrib/hbnetio/utils/hbnetio/hbnetioc.hbp
* Tweak to build hbformat in shared mode for
win/wce/os2 systems.
* contrib/hbnetio/utils/hbnetio/hbnetio.hbp
* contrib/hbnetio/utils/hbnetio/hbnetioc.hbp
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
+ contrib/hbnetio/utils/hbnetio/netiocon.prg
- contrib/hbnetio/utils/hbnetio/netiocui.prg
+ contrib/hbnetio/utils/hbnetio/netiocmd.prg
+ Split netiocui.prg into cmdline tool and
console logic. The latter is now used by both
the daemon tool and cmdline tool.
* contrib/hbplist
- contrib/hbnetio/utils/netiosrv/netiosrv.hbp
+ contrib/hbnetio/utils/netiosrv/hbnetio.hbp
- contrib/hbnetio/utils/netiosrv/netiocui.hbp
+ contrib/hbnetio/utils/netiosrv/hbnetioc.hbp
- contrib/hbnetio/utils/netiosrq/netiosrq.hbp
+ contrib/hbnetio/utils/netiosrq/hbnetioq.hbp
! Renamed back to get in sync with installer.
; TOFIX: Change hbnetioq to a pure management client without
embedded server daemon code. Pritpal, can you do it?
; TODO: Change hbnetio to be pure server daemon and add separate
management console tool. Or, it's possible to put the
console UI in a lib and keeping it included in daemon
for convenience.
* contrib/hbnetio/utils/netiosrv/netiosrv.prg
* contrib/hbnetio/utils/netiosrv/netiocui.prg
+ Added 'clientinfo <ip:port>' console command. This will
display the self-identification variable sent by the client
to the server on connect. It's fully up to the client what
this info contains. The command works for both normal
and management connections.
+ Added 'adminfo' console command to list management client
connections.
+ Added stream based "cargo" data exchange based on Przemek's
code, purely as an experiment. Cargo data will be shown
in connection lists.
% Optimized out redundant connector code in console UI.
* contrib/hbnetio/utils/netiosrv/netiosrv.prg
* contrib/hbnetio/utils/netiosrv/netiocui.prg
+ RPC command names changed to begin with "hbnetiomgm_" (instead of "netio_")
% Using constants for default ip/port and showing them
dynamically in help screens.
+ Cleaned CUI options now there is simple -addr=<ip[:port]> format
supported.
* CUI option -adminpass= renamed to -pass=.
+ CUI now supports disconnect/connect command on the console.
connect will ask for the password if omitted.
It also means that console can now be in 'disconnected' state.
This will be the mode it starts up when no password is
specced on the cmdline.
* contrib/hbnetio/utils/netiosrv/netiosrv.prg
+ Added 'netio_ping' RPC function.
(utilitzed to detect broken connection. Is there a better way?)
* contrib/hbnetio/utils/netiosrv/netiosrv.hbp
- contrib/hbnetio/utils/netiosrv/netiocmd.prg
+ contrib/hbnetio/utils/netiosrv/netiocui.prg
* Renamed console UI source.
+ Added 'exit' command to console UI, to
simply exit the console.
+ Added detection of lost connection in console UI.
% Deleted NETIO_DISCONNECT() call. Not needed ti
NETIO_GETCONNCETION().
+ Added support for standalone console UI
build mode. Added required entry/cmdline help functions.
+ Added error msg when connection to server management
failed.
+ contrib/hbnetio/utils/netiosrv/netiocui.hbp
+ Added .hbp file for standalone console UI.
* contrib/hbnetio/utils/netiosrv/netiosrv.prg
* contrib/hbnetio/utils/netiosrv/netiocmd.prg
+ Help text now show port and iface defaults.
+ Client info is now stored in the connection
table (not used anywhere ATM). Finally solved it by
using thread ID to identify connections in RPC server side.
+ Added thread ID to the per connection data structure.
+ 'show' command now shows thread ID instead of ordinal.
* contrib/hbnetio/utils/netiosrv/netiosrv.prg
* contrib/hbnetio/utils/netiosrv/netiocmd.prg
! 'netio_logconn()' RPC was returning wrong value.
+ Console UI extended to use NETIO_GETCONNECTION() and
use pConnection to make RPC calls. Which opens the door
to support multiple server connections at the same time.
+ Added experimental code for management client indentification.
Currently the management client will identify itself right
after connection, and this information will be shown on the
server console.
; QUESTION: How to find out in an RPC call on the server side,
which connection it belongs to?
; QUESTION: Should NETIO_DISCONNECT() support optional pConnection
parameter (instead of IP/port pair)?
* contrib/hbnetio/utils/netiosrv/netiosrv.prg
* contrib/hbnetio/utils/netiosrv/netiocmd.prg
+ Console UI moved to separate thread and it's now fully
contained in netiocmd.prg. The only communication between
console UI and netio server is via remote management RPC
interface.
This means the console UI can be easily removed or moved
to separate executable.
+ Added -noui cmdline option which disables interactive console.
; Little rough around the edges, but it show the capabilities.
* contrib/hbnetio/utils/netiosrv/netiosrv.prg
* contrib/hbnetio/tests/netiomt1.prg
+ Added 'netio_conninfo' remote mgmnt command.
It will return all client connections in an array of hashes.
* contrib/hbnetio/utils/netiosrv/netiosrv.prg
* contrib/hbnetio/utils/netiosrv/netiocmd.prg
+ contrib/hbnetio/tests/netiomt1.prg
+ Added secondary server interface for remote management. Little hacky
and incomplete yet.
New options added: -adminport, -adminiface, -adminpass
+ Added remote management function: "netio_shutdown" (similar to 'quit' command)
+ Added 'shconn' and 'noshconn' commands to enable/disable
console feedback when client connects/disconnects.
(this is permanently enabled for management connections)
* contrib/hbnetio/utils/netiosrq/netiosrq.hbp
% Fixed: wrong path.
* contrib/hbnetio/utils/netiosrq/netiosrq.prg
! Adopted: Latest changes in netio_* API.
+ Implemented: Bytes sent and received per connection.
* contrib/hbnetio/utils/netiosrv/netiosrv.prg
* contrib/hbnetio/utils/netiosrv/netiocmd.prg
+ Added command to enable/disable incoming connections.
(noconn/conn commands)
It makes client crash with read error, so I'm not sure if
this is good solution, or how to solve it better.
* Renamed 'conn' command to 'show'.
* contrib/hbnetio/utils/netiosrv/netiosrv.prg
* contrib/hbnetio/utils/netiosrv/netiocmd.prg
+ Added command to stop specific or every connection.
Using 'stop <ip:port>' or 'stop all'.
* contrib/hbnetio/utils/netiosrv/netiosrv.hbp
! Corrected relative path to hbnetio.hbc
* contrib/hbnetio/hbnetio.hbc
! Added missing incpath option.
* contrib/hbnetio/hbnetio.ch
* contrib/hbnetio/netiosrv.c
! Typo: NETIO_SRVINFO_PEERADDRES -> NETIO_SRVINFO_PEERADDRESS
* contrib/hbnetio/netiosrv.c
- Deleted: NETIO_OPENFILESCOUNT().
; TODO: Pls update netiosrq to use the new interface.
Same for netiosrv. I'll do it in next commit.
* contrib/hbnetio/hbnetio.ch
! Added notice that this .ch file is used also by .c code.
* contrib/hbnetio/utils/netiosrv/netiosrv.prg
* contrib/hbnetio/utils/netiosrv/netiocmd.prg
+ Added 'conn' console command to show number of connections
and show information for all connections. The data includes
IP and port, time of connection, no. of open files.
Utilizing some concepts from Pritpal's netiosrq code, but
rewritten, so new code doesn't use STATIC var, it's
little bit more efficient. I didn't implement unfinished
features, like byte counting.