29.08.2011 |
Metalserve is obviously no longer being developed, these webpages remain on 0xf8.org mainly for historical purposes. The download links still work, however, in case you really want to play around with some unfinished
code...
|
10.11.2007 |
I've moved the website to a new host, which, however, does not provide FTP
services anymore. The download links have been changed accordingly.
|
17.09.2006 |
After some serious nagging by Mike van Goor (and I seriously thank him for
that ;) I put a snapshot of the latest repository version online, SVN version
250. It is available together with a SVN log, that might be useful in tracing
what I intended to do.
Naturally it would be more useful to make the repository itself available,
eg. for inspection via ViewSVN, so you fine fellas can see what exactly
happened when and eventually commit new stuff, but that I won't do unless there's
some serious interest shown. You know, I'm lazy and stuff ;)
Note that I have even more changes in my local working copy, but these
probably won't compile and I would need to check them out in more detail. I'll
just send a diff to Mike, at least he seems to be willing to invest the necessary
time that I don't have...
Furthermore I put some additional developer docs about the config parser
online that had been flying around for some time.
|
09.08.2006 |
I finally fixed the website. Due to a PHP upgrade, those pages were offline for
quite a long time (more than a year, I think).
The project ain't strictly dead, but morely put on ice as I have little
motivation myself the last time due to lack of presence on IRC.
The code's last status was that the file serving code (queue management) was
being built. Actually that one worked, if I recall correctly, and the DCC
DCC SENDs were up to be tackled. Now if some witty coder wants to implement
that, feel free... I should prepare a snapshot of the lastest code soon.
|
07.10.2003 |
MetalServe has made some considerable progress (what do you do in the evenings
when you're on vacation in Hungary... yup, you code), but I'd have to look in
the CVS logs to remember all changes, I'll do that later this month (maybe then
I have another snapshot ready).
For now, check out some Visions and ideas
for the future...
|
14.08.2003 |
Nah, this project won't be dying anytime soon, I just was too lazy, didn't have
the time or whatever, it's 35°C outside, damnid :)
Amongst other things I also upgraded my systems to SuSE 8.2 and gcc v3.3 --
and enabling -Wall made my ask myself why I didn't enable it earlier... no biggies
though, just one warning left, otherwise the code was fairly ok, even to gcc 3.
Realizing that in order to start with the file request system I'd have to add
support for the database of offered files to makelist and metalserved, I
discovered that I simply had forgotten to implement one important feature into
the config parser, namely the ability to specify that directive xyz is required
in this and this section (eg. the "nickname" directive must be present since
there is no default for it). That's done, and now it's soon up for adding
gdbm support...
|
21.05.2003 |
MetalServe in my CVS now joins channels... but I won't tell which channels, as
you'll guys then take control of those test channels, hehe :)
I'll have to implement some other basic things such as dealing with KICKs
and server disconnects etc., before I'll even think of putting up another
snapshot. Yeah, I know, hell of a progress...
|
19.04.2003 |
There's a new snapshot up on the Download page:
MetalServe now carries version number 0.3 since we do IRC server connections
by now :-)
Added documentation for new
visible_address directive.
|
11.04.2003 |
I'm having another exam on April 25st, so there won't be much time for MetalServe
development until then (the first exam on April 9th was just excellent *g*). Today,
however, I took a day off from learning and finished "molding" the tools required
for metalserved to start speaking the IRC protocol (the ringbuffer, to be more
precisely). A first result can be seen here.
|
14.03.2003 |
Not much news to report, I'm currently a bit lazy...
I did in the meantime however clean up makelist's interface to the filetype information modules. There is now a single information gathering function and no specific INFO structures any longer.
|
13.02.2003 |
Just in case that you're wondering, it's exam time again... three written ones
followed by a seminar, up to the 24th or so.
Updated Roadmap once again. Actually I already
played with makelist and the ringbuffer with surprisingly little difference, as
if glibc does away with makelist's current stupid read-one-character-at-a-time
logic... no time yet to investigate this further.
|
06.02.2003 |
Updated Roadmap and Links on the About page -- finally found a working link for that S343 serving script.
|
31.01.2003 |
Yeah, I only just noticed that this month's previous news items carried a
"year 2002" tag...
Anyway, I've realized my ideas from 23.01.2003 and am currently implementing
a ringbuffer, necessary for efficient communication with IRC servers. This
ringbuffer will at some time also be used by makelist in its MP3 info module,
which currently does some inefficient memory moving.
Last not least, I've moved the .tar.gz's to ftp.metalserve.org, which should
be functional by tomorrow, ie. you'll probably get 404s today and need
to use an ordinary FTP client to access the downloads.
|
23.01.2003 |
Looking at how the single logfile gets blown up with messages from all the
different IRC networks, I think I'll give users the possibility to specify not
only a global logfile but additionally per-network logfiles (and associated
loglevels). If for a given network no logfile was specified, the global logfile
will be used.
I will suggest that users create a
/var/log/metalserve directory, but as both global and network logfile
locations are resp. will be configurable, this won't be a requirement if you
hate the idea of "dedicating" a directory to MetalServe logfiles... makelist,
by the way, will continue to use the global
logfile directive.
Per-network logfiles will be handy because I definitely will create possibilities
so that all communication with the IRC servers (and later on, IRC clients) can be
logged for debugging purposes and users won't have to mess with tcpdump or other
packet sniffers.
Also, the logging module will no longer automatically add source file name,
function name and source file line number when a
loglevel of "debug" is given. Instead
there will be a seperate option to logopen() and appropriate seperate options
to makelist and metalserved. Just because you want log messages that for good
reasons are logged with severity level "debug" should not imply that you get
logfile lines that are even longer than normally.
(The Logging page does not reflect these ideas yet.)
|
18.01.2003 |
The code merge is coming along very nicely and almost completed. I'm now finally
again in a phase where I actually have to deal with the IRC protocol itself
and not "basics". metalserved already does everything described on the new
documentation page Server connects, albeit on
the TCP level. The IRC protocol stuff is next on my list.
I've created a new "Developers" section in the navigation bar to the left and
moved the "Download" link down there for as long as there's no end-user
version ready. You can also find there the Roadmap
page, whose intention it is to provide the interested public with an overview
of my planning and my progress.
Also fixed some bugs on the Config reference
page (it's ignored_users, not
ignore_users, and the
hintsfile directive erroneously
referred to @<nickname>-que
instead of @<nickname>-hint).
|
10.01.2003 |
The configuration parser has been completed, I increased the version number to
0.2 and accordingly a new, up-to-date snapshot is available for
Download. This snapshot introduces for the first
time the first outlines of metalserved, the main program, albeit it currently
does nothing but process the configuration file completely and log a start and
shutdown message.
The configuration parser is now a really nifty piece of software, ready
available for use by third-party programs as well. It now knows the concept of
sections, ie. directives having subsections and directives being valid in
certain sections only etc. This all has been documented for a long time on
the Configuration directive reference page,
so there's no need to rework MetalServe configuration files.
Next on the schedule is the merging of the low-level IRC server connection
handling code, after which I'll release the next snapshot. If then metalserved
also talks the IRC protocol in the primitive way required to actually successfully
log on on to an IRC server without getting kicked, another snapshot will be
released and the version number will be increased to 0.3.
|
08.01.2003 |
Config testing is coming well along, metalserved (and tomorrow makelist) has
a "-t" command line option that shows the configuration in use after the config
file has been read and command line options have been parsed. You may use this
option to see easily the effect of changes to the MetalServe configuration
without having to run it completely.
|
01.01.2003 |
Welcome to the new mill^H^H^H^Hyear! There wasn't much news during december
because I had to "waste" nearly the entire month for university, christmas and
stuff :)
On the News front, the config parser now has full (sub)section support, but I
have to teach metalserved to use the new features first as to find bugs and test
the new code. This is coming along nicely and I expect the config thing to be
done within this week. In any case, it will be large commit to my CVS
repository and another little milestone until "real" development can begin --
remember that I'll still have to merge old code from last February/March that
takes care of primitive IRC server connection management.
I've prepared some documentation on the config parser for programmers, not only
so that I myself can at a later time still understand and use my own code but
also so that others are able to integrate it into their own code. Documentation
ain't finished yet, however, and will probably appear inside a "programmer's
corner" on the Website sooner or later.
So, in summary my next steps are going to be:
- complete metalserved's config so that I can
- fix bugs and finish testing of new code in config parser
- merge IRC server connection management code
- complete IRC server protocol code
- ...
Expect a new snapshot sooner or later this month.
|
03.12.2002 |
Well... I thought it over and decided that it doesn't make much sense to have
the user remember whether a configuration directive's argument must be quoted
or not, so the previously referenced "syntax 1" now does unquoting and unescaping
as well, even if it accepts a single argument only. And I merged the "Quoting"
and "Escaping" section into a single one. See
Configuration file format.
|
02.12.2002 |
Once again touched the Configuration file format
page as the actual parser will be less restrictive than I planned. In the
mentioned Syntax no. 1, no unescaping and no unquoting will be performed at all.
Also the parser won't check for an even number of double quotes in syntax no. 2
-- it will just remove double quotes when present for quoting purposes.
This is all to free the CFGDIRECTIVE structure from the "flags" field and make
space for support of subsections or directive contexts, as will be required for
the parser to support the network,
channel and
server directives. Obviously, I
can't merge the old server connection code until the parser understands the
directives and can set up the necessary structures.
|
24.11.2002 |
Rewrote parts of the Configuration file format
page (smaller updates, more detailed explanations etc.).
|
24.11.2002 |
Nope, the project ain't dead, it's just university stealing precious time...
I had to extend the common/conf.[ch] routines a bit to support the loglevel
configuration directive. As a side effect, argparser_stringlist also supports
Apache-style "Options" directives with the arguments setting bits that are ORed
together.
I'd like to kindly ask you to subscribe to the mailing list if
this project is of interest to you. It's the only reliable way to reliabily
register outside interest apart from counting downloads of the snapshots. Thank
you!
|
26.10.2002 |
Started merging the old code. As a first result, there is now a logging module,
which, however, does not do syslog yet (only pure logfile writing).
Added Logging documentation.
|
19.10.2002 |
No time to code but... ehrm... well, exam 1 was worth the trouble and in result
I took some time off and investigated the use of autoconf and automake (and
dropped the latter for a number of reasons). So we now have a configure script
in preparation for better portability.
Speaking about portability I included the getopt[_long] routines for platforms
without glibc, so I got makelist working on FreeBSD now as well (VMWare rulez).
In other news I discovered on IRC that another fileserving script for mIRC has
become available, named S343. Unfortunately the URL mentioned in the archive's
readme (s343.eyes.at) is not valid, but you can find it eg.
here (just for
studying what the common scripts do, of course ;).
And by the way, a new snapshot is available on the Download
page. This one has a nice progress display, has a configure script (but no real
portability yet) and compiles on FreeBSD 4.6, so give it a try and report any
bugs you find to me.
|
13.10.2002 |
No time to code but to write a down a new idea for MetalServe: the
hintsfile directive.
|
01.10.2002 |
Recent changes (not online yet):
- Implemented a progress display with a rotating cursor, which is displayed
only if a tty is attached, and if so, also respects the terminal's width.
- Made makelist more verbose in general.
- Added -q command line switch to make metalserve shut up again =)
- Moved code to convert a pure seconds value to minutes and seconds to a
new common/misc.c routine named get_mins_and_secs()
|
27.09.2002 |
MetalServe development is now under CVS control (albeit using my private CVS
server at home, as long as no significant interest from outside developers
arises).
I currently play with termcap and terminfo to give makelist some progress
display when run with a capable tty attached. And I now also have a more
precise idea of the interface between makelist and MetalServe.
In other news, I have to focus on studies until the end of October so
so development may be frozen for some weeks... we'll see.
|
24.09.2002 |
I've put up a new development snapshot on the Download
page.
|
23.09.2002 |
- Fixed bug where the range of the ID3v1 genre field was not checked and caused
a segfault when the internal array with genre strings was accessed.
- Fixed bug in MPEG Audio examination routine where the wrong header was
zeroed.
- Added new makelist directive list_header.
The sample configfile has this directive enabled, with the textfile to be included
being /var/lib/metalserve/header.txt/. Remember
to comment out the directive if you don't want to create this file.
|
22.09.2002 |
makelist has a new configuration directive:
dir_overview.
|
21.09.2002 |
makelist now tries to open the configfile at the two locations
- /etc/metalserve.conf
- ~/.metalserve.conf
in this order (previously I hardcoded a location within my own development
tree).
|
20.09.2002 |
News from the front (stupid joke only Germans will understand):
- Bah, so include_extensions matching is
back at its old place where it works on all Linux/Unix boxes...
- The Scheich found a bug in insert_scannode(). Fixed.
- Modularized filetype examination routines so I can put the filetype-specific
stuff in seperate .c/
.h files
|
13.09.2002 |
Changes to my development tree last night (not online yet):
- Moved MPEG audio info detection into own .c/
.h files for modularization
- Cleanup: moved variables from .h to
.c files
- Moved include_extensions matching into dirent_selector()
- Header lines for directory are now only written when the directory actually
contains files (skipping dirs that have only subdirs like eg.
Artist-Best of CD Box with subdirs
CD1 and CD2
)
Note that you need to change the configfile path in
src/common/base.h if you want to play around with the development snapshot.
|
09.09.2002 |
Last week has been very fertile as regards coding. Here's the changelog (affects
makelist only):
- Fixed stupid bug of trying to call S_ISDIR() on a node (caused the
segfault mentioned below, which strangely occured with large MP3 directories
only).
- makelist relied on the standard saying the header's sync word should be
present in the header only. Of course reality proved different, so we now
explicitly skip over the frame body after we read its header so that we read
the real MPEG frames only and not misinterpret audio data.
- Still we now check MPEG frames more strictly than before.
- Added support for Frauenhofer VBR tag.
- Added support for headerless VBR files: n additional frames are checked
for their bitrate, if a difference is determined we deal with a headerless
VBR file and read m (m > n) additional frames to get a precise average
bitrate and thus a close approximation of the song length.
- Added ID3v1.1 tag support (artist, song title, record, year, track#, genre)
- Kicked blockwise reading to simplify the code.
- Kicked MPEG v2.5 support for now.
- Cleanups with regard to constants and definitions.
- Added support for compress_command
and related, new keep_uncompressed_list
directive.
So big changes and I'm actually very proud of having finally understood the
MP3 thingy, learning that neither WinAmp nor XMMS seem to determine an accurate
number of frames (which doesn't make much of a difference since each frame
stores only a fraction of a second music).
I've put the idea of a progress display aside for now since it's not really
that important as makelist is probably gonna be run as a cronjob anyway. What's
more important is a better modulization and support for more filetypes:
.wav, .mpg
(Video streams and combined Video/Audio (System) streams),
.avi, .qt,
.rm, .asf,
.ogg, ... I really don't like the idea of
adding too many dependencies on external libraries and I enjoy learning about
all these file formats, that's why I rather build them all into makelist.
A new development snapshot will be up for download later tonight.
|
01.09.2002 |
Changes to makelist last week:
- in-my-eyes-accurate #frames detection for CBR MP3s
- reading of #frames from Xing header in VBR MP3s
- read and include ID3v1 tag information in filelist
- no more senseless display of first MP3 frame's CRC
- code cleanups (though there's still pretty rough edges)
Excerpt from my to-do list for makelist:
- Fix Segfault on larger MP3 directory
- Read n frames for VBR files without Xing header
- Frauenhofer VBR header detection
- Support for include_extensions parameter
- Progress display
- Generation of .csv list for Spreadsheet import (low priority)
- Database interface to MetalServe (needs some conceptual work yet)
No new development snapshot as I'm short on time, I'll post a new one next
week when I've done some more coding.
|
25.08.2002 |
A first snapshot of my development tree is now available on the Download page for interested developers.
|
23.08.2002 |
I've set up a mailing list for discussion of MetalServe and stuff - just click
the link on the left to subscribe!
|
21.08.2002 |
Back from the first holiday, but in a few days I'll be gone for another week and
then again for another, so the updates might be a bit scarce.
I've used last week to implement MP3 song length detection into makelist,
trying to understand code from XMMS and stuff, but I'm still not 100% satisfied.
Also XING VBR headers are not implemented yet, and a lot of other stuff. Yet
I'll probably post a snapshot the upcoming days, so you guys can finally see
some code.
|
11.08.2002 |
The Configfile reference is as good as complete for now. Check it out if you
want to get an impression of what MetalServe is going to be.
No updates for the upcoming week, I'm on holiday.
|
07.08.2002 |
Moved to the new domain www.metalserve.org
with a new webdesign since I want to get this project become serious =)
|
08.06.2002 |
Credits to Miracle/1oo% for
his MetalServe logo.
|
24.05.2002 |
Replaced the single page with more detailed pages.
|
06.05.2002 |
Here's a sucky logo while Miracle/1oo% is hopefully drawing me a better one...
As for the code, I'm currently specifying a leaner configfile parser, as the current code I use in the MetalServe prototype (which does already attempt to establish IRC server connections but does nothing more yet) sucks way too much to be released to the public ;)
|
21.04.2002 |
Finally put the page online.
|