Giter VIP home page Giter VIP logo

Comments (27)

yomguy avatar yomguy commented on July 18, 2024 2

Hi @ckhawks,
The deefuzzer has not been tested against libshout 2.4.1. So I will make a new release soon when done and fixed.

from deefuzzer.

ckhawks avatar ckhawks commented on July 18, 2024 1

I hate to gravedig, but I'm getting the same symptoms as this issue today. I've tried both cloning from GitHub as well as installing via pip, neither work. Each time I run deefuzzer using the following .xml configuration file I get the following console + station log output.

.xml

<deefuzzer>
    <!-- A quick note about XML configuration files - they cannot have empty values.  For
          example, <tag></tag> is invalid, while <tag> </tag> is valid (single space as a
          value).  An empty tag will crash the entire application.  You have been warned.  -->
    <!-- A path to the log file (need write access rights to the directory) -->
    <log>station.log</log>
    <!-- A path to the M3U playlist file (need write access rights to the directory).
         The file is preferably accessible behind an url,
         for example, http://mydomain.com/m3u/mystation.m3u -->
    <m3u>station.m3u</m3u>
    <!-- Whether or not to skip stations that fail instead of dying completely.  0 will raise
          all errors and report them to the console, 1 will log the error and continue.  -->
    <ignoreerrors>0</ignoreerrors>
    <!-- How many times to attempt to restart a station thread that died for any reason.
         -1 will attempt to restart unlimited times, 0 will not attempt a restart, and any
         positive value will attempt to restart that many times.  The counter is reset when
         the next subsequent check finds the station operational.  Default is 0 (no retry) -->
    <maxretry>0</maxretry>
    <stationdefaults>
      <!-- This tag allows a common default configuration to be set for all stations.  This
           is useful when defining many stations that will share many common configuration
           settings.  If a setting is specified here and in a station tag, the station tag
           will override this one.  Available options are the same as the station tag. -->
        <control>
            <!-- If '1', an OSC controller thread is started to allow external commands
                See README for more info -->
            <mode>0</mode>
            <!-- The port of the OSC server -->
            <port>16001</port>
        </control>
        <jingles>
            <!-- A path to the directory containing jingles media files.
                The files have to be of the same type of the main media files. -->
            <dir>/path/to/jingles</dir>
            <!-- If '1', some media will be played between each main track of the playlist. '0' does nothing. -->
            <mode>0</mode>
            <!-- If '1', the jingle playlist will be randomized. '0' for alphanumeric order -->
            <shuffle>1</shuffle>
        </jingles>
    </stationdefaults>
    <station>
        <!-- The base directory to be prepended to file paths for this station. This value is prepended
              to the following parameters:

                - jingles/dir
                - media/m3u
                - media/dir
                - media/source (except for stations created using the stationfolder method)
                - record/dir
                - feeds/dir

              If the parameter path begins with a slash, it is assumed to be an absolute path and
              prepending does not occur (see https://docs.python.org/2/library/os.path.html#os.path.join )
        -->
        <base_dir>stations/</base_dir>
        <control>
            <!-- If '1', an OSC controller thread is started to allow external commands
                See README for more info -->
            <mode>0</mode>
            <!-- The port of the OSC server -->
            <port>16001</port>
        </control>
        <infos>
            <!-- The description of the station -->
            <description>My personal best funky playlist ever!</description>
            <!-- The name (title) of the station -->
            <name>My best funky station</name>
            <!-- The short name of the station. It will define the mount point,
                 for example http://mydomain.com:8000/my_station.mp3 -->
            <short_name>My_station</short_name>
            <!-- The website of the station (for metadata) -->
            <url>http://parisson.com</url>
            <!-- The genres of the audio streams -->
            <genre>Various Funk Groove</genre>
        </infos>
        <jingles>
            <!-- A path to the directory containing jingles media files.
                The files have to be of the same type of the main media files. -->
            <dir>/path/to/jingles</dir>
            <!-- If '1', some media will be played between each main track of the
                playlist. '0' does nothing. -->
            <mode>0</mode>
            <!-- If '1', the jingle playlist will be randomized. '0' for alphanumeric order -->
            <shuffle>1</shuffle>
        </jingles>
        <media>
            <!-- The mean bitrate of the media -->
            <bitrate>96</bitrate>
            <!-- The <m3u> option is depreciated.  Please use the newer <source> option. -->
            <!-- <m3u>/path/to/m3u_file</m3u> -->
            <!-- The <dir> option is depreciated.  Please use the newer <source> option.
                  This option overrides the <m3u> option if both are specified. -->
            <!-- <dir>/path/to/mp3_folder</dir> -->
            <!-- The path to the folder containing audio files, or the M3U playlist file to
                  use as source audio for this  station.  This option overrides both the <dir>
                  and <m3u> depreciated options if they are specified. -->
            <source>/music/test/</source>
            <!-- The audio format of the media. Can be 'mp3' or 'ogg' -->
            <format>mp3</format>
            <!-- The ogg quality of the ogg vorbis media -->
            <ogg_quality>4</ogg_quality>
            <!-- The sample rate of the media -->
            <samplerate>48000</samplerate>
            <!-- If '1', the playlist will be randomized. '0' for alphanumeric order -->
            <shuffle>1</shuffle>
            <!-- The number of channels - or voices - of the media. '1' for mono, '2' for stereo. -->
            <voices>2</voices>
        </media>
        <record>
            <!-- The directory where files will be recorded -->
            <dir>recordings/</dir>
            <!-- If '1', the stream will be recorded, '0' does nothing -->
            <mode>0</mode>
        </record>
        <relay>
            <!-- The default author of the relay streams -->
            <author>Unknown</author>
            <!-- If '1', the station will relay another _existing_ stream.
            Wonderful for commuting to live sessions. '0' does nothing -->
            <mode>0</mode>
            <!-- The URL of the station to relay -->
            <url>http://127.0.0.1:8000/telecaster_live.mp3</url>
        </relay>
        <feeds>
            <!-- If '1', the feeds will output, '0' will do nothing.  Default: '1' -->
            <mode>1</mode>
            <!-- If '1', the feeds will output in RSS format, '0' will not.  Default: '1' -->
            <rss>1</rss>
            <!-- If '1', the feeds will output in JSON format, '0' will not.  Default: '0' -->
            <json>0</json>
            <!-- If '1', the feeds will output a 'playlist' feed, '0' will not.  Default: '1' -->
            <playlist>1</playlist>
            <!-- REQUIRED: A path to the directory containing RSS (XML) files that is 'currently playing'
                and 'playlist' feeds (need write access rights to the directory).
                The file is preferably accessible behind an url,
                for example, http://mydomain.com/rss/mystation.xml -->
            <dir>mystation.xml</dir>
            <!-- REQUIRED: If '1', the RSS feeds will contain an enclosure to become a podcast feed.
                '0' for simple RSS feed without enclosure -->
            <enclosure>1</enclosure>
            <!-- the base URL of all media items.
                 Default is station url /media -->
            <media_url>http://localhost/media/</media_url>
            <!-- Include the full name of the file in the feed -->
            <showfilename>1</showfilename>
            <!-- Include the full server path of the file in the feed -->
            <showfilepath>0</showfilepath>
        </feeds>
        <server>
            <!-- The host to send the stream (domain or IP) -->
            <host>192.168.1.2</host>
            <!-- The mountpoint stream -->
            <mountpoint>monitor</mountpoint>
            <!-- The port of the Icecast2 server on the host -->
            <port>8000</port>
            <!-- If '1', the mount point will be publish on yp.icecast.org, '0' for private streams -->
            <public>0</public>
            <!-- The source password of the Icecast2 server on the host -->
            <sourcepassword>k2kv18c9jopd</sourcepassword>
            <!-- The type of the server (icecast or stream-m) -->
            <type>icecast</type>
            <!-- If '1', the media format will be appended to the mount name (ie, /mount.mp3 instead of /mount).
                 '0' will leave the mount name alone.  Default is 0.  Used only for icecast streams -->
            <appendtype>0</appendtype>
        </server>
        <twitter>
            <!-- Your twitter username -->
            <key>your access token key</key>
            <!-- If '1', deefuzzer will tweet #nowplaying, new tracks and other things to Twitter. 'O' does nothing. -->
            <mode>0</mode>
            <!-- Your twitter password -->
            <secret>your access token secret key</secret>
            <!-- These tags will be added to each twitter message -->
            <tags>parisson deefuzzer</tags>
        </twitter>
    </station>

    <!-- Note that you can add many different stations in the same config file, thanks to the multi-threaded architecture ! -->

    <!-- The stationfolder option allows auto-creation of stations based on a folder structure.  See the readme
         for details. -->
    <stationfolder>
        <!-- REQUIRED: The base folder to use when auto-generating stations -->
        <folder>stations/</folder>
        <!-- OPTIONAL: If '1', stations will be created as folders are added ("watchfolder" capability). If '0',
             folders will only be added when the program is started. -->
        <livecreation>1</livecreation>
        <!-- Station information to use.
             All the same options are available as the station setting, and all stations will also have the global
             stationdefaults applied.  -->
        <infos>
            <short_name>[name]</short_name>
            <name>[name]</name>
            <genre>[name]</genre>
        </infos>
    </stationfolder>

    <!-- The stationfolder option allows specifying a folder to scan for additional configuration files.  Applies only
				 those that are station blocks.  Can specify multiple stationoption blocks.  -->
		<stationconfig>/path/to/configs</stationconfig>
		<stationconfig>/path/to/configs2</stationconfig>
</deefuzzer>

Console output

stlrc@spotitubevm:~/deefuzzer$ deefuzzer deefuzzer.yaml
Segmentation fault (core dumped)

station.log

2019-05-22 10:57:38,625 INFO Core: Starting DeeFuzzer
2019-05-22 10:57:38,628 INFO Core: Using libshout version 2.4.1
2019-05-22 10:57:38,629 INFO Core: Number of stations : 1
2019-05-22 10:57:38,629 INFO Core: Loading new stations
2019-05-22 10:57:38,630 INFO Station http://192.168.1.2:8000/monitor.mp3: Opening monitor - My best funky station
2019-05-22 10:57:38,633 INFO Core: Started station Station 0
2019-05-22 10:57:38,633 INFO Core: Writing M3U file to : radio.m3u
2019-05-22 10:57:38,788 INFO Station http://192.168.1.2:8000/monitor.mp3: Channel available.
2019-05-22 10:57:39,188 INFO Station http://192.168.1.2:8000/monitor.mp3: channel connected
2019-05-22 10:57:39,201 INFO Station http://192.168.1.2:8000/monitor.mp3: Generating new playlist (4 tracks)
2019-05-22 10:57:39,225 INFO Station http://192.168.1.2:8000/monitor.mp3: DeeFuzzing:  id = 3, name = AJR - Iā€™m Not Famous.mp3

from deefuzzer.

yomguy avatar yomguy commented on July 18, 2024

Hi!
Thanks for your well detailed report.
Do you need a m3u playlist file? If not, could you please test without the tag?
Also, you could check the icecast conf to allow more than 2 source clients?
Cheers

from deefuzzer.

timecage avatar timecage commented on July 18, 2024

Thanks for a quick response.
Didn't know I can omit the tag. I removed it and deefuzzer generated its own playlist file. No change in behaviour though.
I also tried changing icecast binding from localhost to my public IP so it matched deefuzzer configuration. Also no change in behaviour.
Not sure what you mean by more than 2 source clients. I can input more listen sockets in icecast.xml but each one needs a port number. But deefuzzer.xml points to only one of those at a time. That is if I understand the configurations correctly.

from deefuzzer.

yomguy avatar yomguy commented on July 18, 2024

You're welcome.
Could you please try to omit this tag : /home/useiradio/neonorigami/conf/neonorigamiplaylist.m3u ?
Not an IP pb beacause your log says the connexion is ok..
For the icecast conf, what is your 10 tag value?

EDIT : sorry GitHub makes a wrong parsing. I meant <sources>10</sources> tag value..

from deefuzzer.

timecage avatar timecage commented on July 18, 2024

To ease things out, my icecast.xml:

<icecast>
    <location>Void</location>
    <admin>[email protected]</admin>

    <limits>
        <clients>100</clients>
        <sources>2</sources>
        <threadpool>5</threadpool>
        <queue-size>524288</queue-size>
        <client-timeout>30</client-timeout>
        <header-timeout>15</header-timeout>
        <source-timeout>20</source-timeout>
        <burst-on-connect>0</burst-on-connect>
        <burst-size>65535</burst-size>
    </limits>

    <authentication>
        <source-password>neonorigami</source-password>
        <relay-password>secret</relay-password>
        <admin-user>admin</admin-user>
        <admin-password>secret</admin-password>
    </authentication>

    <hostname>00.00.00.000</hostname>

    <listen-socket>
        <port>7701</port>
    </listen-socket>

    <fileserve>1</fileserve>

    <paths>
        <basedir>/usr/share/icecast</basedir>
        <logdir>/home/useiradio/neonorigami/conf/icecast/log</logdir>
        <webroot>/home/useiradio/neonorigami/conf/icecast/web</webroot>
        <adminroot>/usr/share/icecast/admin</adminroot>
        <pidfile>/home/useiradio/.pid/neonorigami-icecast.pid</pidfile>
        <alias source="/" destination="/status.xsl"/>
    </paths>

    <logging>
        <accesslog>access.log</accesslog>
        <errorlog>error.log</errorlog>
        <loglevel>3</loglevel>
        <logsize>10000</logsize>
    </logging>

    <security>
        <chroot>0</chroot>
        <changeowner>
            <user>nobody</user>
            <group>nobody</group>
        </changeowner>
    </security>
</icecast>

I've removed that second m3u tag and deefuzzer didn't shutdown immediately after starting - it stayed as a working process. Turned out my media dir was wrong. After I corrected the path deefuzzer returned to its previous behaviour, shutdown immediately after startup and no error in log.
I've found this below in icecast's error.log, maybe it will help.

[2014-11-10  21:27:11] INFO main/main Icecast 2.4.0 server started
[2014-11-10  21:27:11] INFO yp/yp_update_thread YP update thread started
[2014-11-10  21:27:11] INFO connection/get_ssl_certificate No SSL capability on any configured ports
[2014-11-10  21:27:27] INFO connection/_handle_source_request Source logging in at mountpoint "/stream.mp3"
[2014-11-10  21:27:27] WARN format/format_get_type Unsupported or legacy stream type: "audio/mpeg". Falling back to generic minimal handler for best effort.
[2014-11-10  21:27:27] INFO admin/admin_handle_request Received admin command metadata on mount "/stream.mp3"
[2014-11-10  21:27:27] INFO util/util_conv_string converting metadata from utf-8 to ISO8859-1
[2014-11-10  21:27:27] INFO admin/command_metadata Metadata on mountpoint /stream.mp3 changed to "David Reeves : Skygod"
[2014-11-10  21:27:28] INFO source/source_main listener count on /stream.mp3 now 0
[2014-11-10  21:27:28] INFO source/get_next_buffer End of Stream /stream.mp3
[2014-11-10  21:27:28] INFO source/source_shutdown Source "/stream.mp3" exiting

from deefuzzer.

yomguy avatar yomguy commented on July 18, 2024

Could you try with <sources>10</sources> in the icecast conf ?

from deefuzzer.

timecage avatar timecage commented on July 18, 2024

Tried but to no effect. Behaviour is the same and both icecast's error.log and deefuzzer.log give the same lines.

from deefuzzer.

achbed avatar achbed commented on July 18, 2024

Based on your symptoms and the log entries, I suspect that you might be having issues with your MP3 files. Specifically, icecast (and all other streaming services) work best with a constant bit rate stream of data. By default, most MP3 encoding software uses a variable bit rate (VBR). What I've needed to do for all my files for safety is to load them up into Audacity and re-export as constant bit rate files (128kbps in my case). These seem to work fine.

Can you confirm that the file(s) you are attempting to stream are not VBR?

from deefuzzer.

timecage avatar timecage commented on July 18, 2024

Yup, mine are cbr files. I don't use vbr precisely because they tend to cause problems.
I kind of suspect a faulty or nonexistent mp3 decoder but I don't how I can follow this up in linux. Is there some debug mode in deefuzzer? Or is there a way to check what libraries it requires at runtime?

from deefuzzer.

achbed avatar achbed commented on July 18, 2024

deefuzzer simply puts a stream of bytes from the file to the icecast mount point. Icecast has any needed encoders built in (it wouldn't compile without it). You'd only need a decoder/encoder if you need to transform that stream during transit.

grasps at the latest straw Did you make sure that (a) all the files are in the same format (ie, 128kbps MP3s), and (b) the station definition matches the encoding for those files?

The log is saying that icecast is attempting to read the block, getting either nothing or an end-of-stream, and bailing. This is either a miscommunication on the number of bytes being sent, or deefuzzer is dying when it attempts to send the data.

On second thought, have you tried stripping all the MP3 tags and putting back only the artist and title? On icecast streams, the metadata is included over the data connection - if there's an issue with the tags it might be making the connection drop there as well.

from deefuzzer.

yomguy avatar yomguy commented on July 18, 2024

Completely agree with @achbed diags. There might be something with the files. Personally, I've never had problems with VBR files, but often with bad tags. @timecage, could you please send us the file which is rejected?

from deefuzzer.

timecage avatar timecage commented on July 18, 2024

The thing is, no file in particular is rejected - all or any of them are.
I made sure all files are encoded the same (80kbps, 24khz, 16bit) and that deefuzzer.xml has this exact information. I tried removing some of the tags (only artist and title present anyway) and all of them. No change.

This looks like deefuzzer is dying when it attempts to send the data, as it actually is dying - the process disappears with no error in log.
Not sure if I mentioned this before but I was able to have this running with these exact files on Debian some time ago. But that server sort of exploded and I can't check what the difference was in configuration or in the system itself.
Now I'm using Arch and this stranginess happens so I think this has to do with deefuzzer bailing when reading data because reasons or deefuzzer bailing when icecast rejects data because reasons. And reasons may be the operating system configuration.

I'm very grateful for all your wonderful help but I don't want to drag you around solving stuff which may end up not being deefuzzer's fault. So for now I'll do one thing I can - try reinstalling all of this from scratch. I'll let you know how it goes.

from deefuzzer.

yomguy avatar yomguy commented on July 18, 2024

I've never tried deefuzzer on a Arch indeed (I'm most a Debian guy) nor on Icecast 2.4 I realize...
So I've just tried from a docker image and it seems python3 is the default. Can you confirm?

from deefuzzer.

achbed avatar achbed commented on July 18, 2024

No idea no Arch. I'm running on Icecast 2.4 tho - it's working fine for me.

On Thu, Nov 20, 2014 at 7:07 PM, Guillaume Pellerin <
[email protected]> wrote:

I've never tried deefuzzer on a Arch indeed (I'm most a Debian guy) nor on
Icecast 2.4 I realize...
I will then try Arch from a docker image. Do you please have the first
tweaks/commands which install the dependencies?

ā€”
Reply to this email directly or view it on GitHub
#25 (comment).

from deefuzzer.

yomguy avatar yomguy commented on July 18, 2024

Yes, Icecast 2.4 is OK.
@timecage have you check you have write access to all m3u and log paths?
Also, please test without the <m3u>/home/useiradio/neonorigami/conf/neonorigamiplaylist.m3u</m3u> tag.

from deefuzzer.

timecage avatar timecage commented on July 18, 2024

Sorry for a late update.
The good news is I was able to switch to Debian for my server.
The bad news is I was able to replicate the issue on Debian also.
I'm pretty sure I tried all of the options you presented along and none of those help so there's something I'm still missing. Will work on this some more and give you an update.

from deefuzzer.

achbed avatar achbed commented on July 18, 2024

Silly question - are you running the latest release, or the dev branch?
There's been a ton of changes to the dev branch that are not yet scheduled
for release. Some of these changes might help.

On Mon, Dec 1, 2014 at 10:41 AM, timecage [email protected] wrote:

Sorry for a late update.
The good news is I was able to switch to Debian for my server.
The bad news is I was able to replicate the issue on Debian also.
I'm pretty sure I tried all of the options you presented along and none of
those help so there's something I'm still missing. Will work on this some
more and give you an update.

ā€”
Reply to this email directly or view it on GitHub
#25 (comment).

from deefuzzer.

timecage avatar timecage commented on July 18, 2024

I've installed through pip. I'll try the source then.

from deefuzzer.

timecage avatar timecage commented on July 18, 2024

Yeeaah alright.
So I've uninstalled pip version and cloned the git repo and run the setup and now deefuzzer works as it should. I can actually listen to it playing music!
I'm both totally happy and confundrumbled.

Anyway thanks a billion, really! This is some quality user support you got here.
If you'd need me for some further tests to identify the actual cause of problem, I'd be more than happy to help.

from deefuzzer.

achbed avatar achbed commented on July 18, 2024

Do you happen to remember (or note) the version in pip?

On Mon, Dec 1, 2014 at 11:24 AM, timecage [email protected] wrote:

Yeeaah alright.
So I've uninstalled pip version and cloned the git repo and run the setup
and now deefuzzer works as it should. I can actually listen to it playing
music!
I'm both totally happy and confundrumbled.

Anyway thanks a billion, really! This is some quality user support you got
here.
If you'd need me for some further tests to identify tha actual cause of
problem, I'd be more than happy to help.

ā€”
Reply to this email directly or view it on GitHub
#25 (comment).

from deefuzzer.

timecage avatar timecage commented on July 18, 2024

Reinstalled it to check:
username@tibdev:~$ pip install deefuzzer
Downloading/unpacking deefuzzer
Downloading DeeFuzzer-0.6.5.tar.gz (58kB): 58kB downloaded

from deefuzzer.

yomguy avatar yomguy commented on July 18, 2024

Thanks a lot @achbed.
The current version is indeed 0.6.5 :
https://pypi.python.org/pypi?:action=display&name=DeeFuzzer&version=0.6.5
I'll upgrade it as soon as the test sessions against @achbed's patches are finished ;)

from deefuzzer.

yomguy avatar yomguy commented on July 18, 2024

Hi @ckhawks,
I have released 0.7.2 tested against libshout 2.4.1 with success. Could you send your YAML file?
A segmentation fault is usually a pb of parameters pushing libshout in a wrong state...

from deefuzzer.

clarkenheim avatar clarkenheim commented on July 18, 2024

I am having the same issue as @ckhawks, here is my config here:

<deefuzzer>
    <log>/deefuzer_station.log</log>
    <maxretry>4</maxretry>
    <stationdefaults>
        <control>
            <mode>0</mode>
            <port>16001</port>
        </control>
        <jingles>
            <dir>/home/ubuntu/jingles</dir>
            <mode>0</mode>
            <shuffle>1</shuffle>
        </jingles>
    </stationdefaults>
    <station>
        <control>
            <mode>0</mode>
            <port>16001</port>
        </control>
        <infos>
            <description>My personal best funky playlist ever!</description>
            <genre>Various Funk Groove</genre>
            <name>My best funky station</name>
            <short_name>My_station</short_name>
            <url>http://parisson.com</url>
        </infos>
        <jingles>
            <dir>/path/to/jingles</dir>
            <mode>0</mode>
            <shuffle>1</shuffle>
        </jingles>
        <media>
            <bitrate>96</bitrate>
            <source>./the_playlist.m3u</source>
            <format>mp3</format>
            <ogg_quality>4</ogg_quality>
            <samplerate>48000</samplerate>
            <shuffle>0</shuffle>
            <voices>2</voices>
        </media>
        <record>
            <dir>/path/to/archives</dir>
            <mode>0</mode>
        </record>
        <relay>
            <author>Unknown</author>
            <mode>0</mode>
            <url>http://127.0.0.1:8000/telecaster_live.mp3</url>
        </relay>
        <feeds>
            <mode>0</mode>
            <rss>1</rss>
            <json>0</json>
            <playlist>1</playlist>
            <dir>/var/www/rss</dir>
            <enclosure>0</enclosure>
            <media_url>http://localhost/media/</media_url>
        </feeds>
        <server>
            <host>EXTERNAL_IP_ADDRESS</host>
            <mountpoint>monitor</mountpoint>
            <port>8000</port>
            <public>0</public>
            <sourcepassword>hackme</sourcepassword>
            <type>icecast</type>
            <appendtype>0</appendtype>
        </server>
        <twitter>
            <key>your access token key</key>
            <mode>0</mode>
            <secret>your acess token secret key</secret>
            <tags>parisson deefuzzzer</tags>
        </twitter>
    </station>
</deefuzzer>

environment info here

cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"
NAME="Ubuntu"
VERSION="18.04.3 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.3 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
libshout3:
  Installed: 2.4.1-2build1
  Candidate: 2.4.1-2build1
  Version table:
 *** 2.4.1-2build1 500
        500 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/main amd64 Packages
        100 /var/lib/dpkg/status
pip show deefuzzer
Name: DeeFuzzer
Version: 0.7.2
Summary: open, light and instant media streaming tool
Home-page: http://github.com/yomguy/DeeFuzzer
Author: Guillaume Pellerin
Author-email: [email protected]
License: GPL v3
Location: /usr/local/lib/python2.7/dist-packages
Requires: setuptools, python-shout, python-twitter, mutagen, pyliblo, pycurl, pyyaml, mysqlclient
python -V
Python 2.7.15+

icecast config:

<icecast>
    <!-- location and admin are two arbitrary strings that are e.g. visible
         on the server info page of the icecast web interface
         (server_version.xsl). -->
    <location>Earth</location>
    <admin>icemaster@localhost</admin>

    <!-- IMPORTANT!
         Especially for inexperienced users:
         Start out by ONLY changing all passwords and restarting Icecast.
         For detailed setup instructions please refer to the documentation.
         It's also available here: http://icecast.org/docs/
    -->

    <limits>
        <clients>100</clients>
        <sources>10</sources>
        <queue-size>524288</queue-size>
        <client-timeout>30</client-timeout>
        <header-timeout>15</header-timeout>
        <source-timeout>10</source-timeout>
        <!-- If enabled, this will provide a burst of data when a client
             first connects, thereby significantly reducing the startup
             time for listeners that do substantial buffering. However,
             it also significantly increases latency between the source
             client and listening client.  For low-latency setups, you
             might want to disable this. -->
        <burst-on-connect>1</burst-on-connect>
        <!-- same as burst-on-connect, but this allows for being more
             specific on how much to burst. Most people won't need to
             change from the default 64k. Applies to all mountpoints  -->
        <burst-size>65535</burst-size>
    </limits>

    <authentication>
        <!-- Sources log in with username 'source' -->
        <source-password>hackme</source-password>
        <!-- Relays log in with username 'relay' -->
        <relay-password>hackme</relay-password>

        <!-- Admin logs in with the username given below -->
        <admin-user>admin</admin-user>
        <admin-password>hackme</admin-password>
    </authentication>

    <!-- set the mountpoint for a shoutcast source to use, the default if not
         specified is /stream but you can change it here if an alternative is
         wanted or an extension is required
    <shoutcast-mount>/live.nsv</shoutcast-mount>
    -->

    <!-- Uncomment this if you want directory listings -->
    <!--
    <directory>
        <yp-url-timeout>15</yp-url-timeout>
        <yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url>
    </directory>
    -->

    <!-- This is the hostname other people will use to connect to your server.
         It affects mainly the urls generated by Icecast for playlists and yp
         listings. You MUST configure it properly for YP listings to work!
    -->
    <hostname>localhost</hostname>

    <!-- You may have multiple <listener> elements -->
    <listen-socket>
        <port>8000</port>
        <!-- <bind-address>127.0.0.1</bind-address> -->
        <!-- <shoutcast-mount>/stream</shoutcast-mount> -->
    </listen-socket>
    <!--
    <listen-socket>
        <port>8080</port>
    </listen-socket>
    -->
    <!--
    <listen-socket>
        <port>8443</port>
        <ssl>1</ssl>
    </listen-socket>
    -->


    <!-- Global header settings
         Headers defined here will be returned for every HTTP request to Icecast.

         The ACAO header makes Icecast public content/API by default
         This will make streams easier embeddable (some HTML5 functionality needs it).
         Also it allows direct access to e.g. /status-json.xsl from other sites.
         If you don't want this, comment out the following line or read up on CORS.
    -->
    <http-headers>
        <header name="Access-Control-Allow-Origin" value="*" />
    </http-headers>


    <!-- Relaying
         You don't need this if you only have one server.
         Please refer to the config for a detailed explanation.
    -->
    <!--<master-server>127.0.0.1</master-server>-->
    <!--<master-server-port>8001</master-server-port>-->
    <!--<master-update-interval>120</master-update-interval>-->
    <!--<master-password>hackme</master-password>-->

    <!-- setting this makes all relays on-demand unless overridden, this is
         useful for master relays which do not have <relay> definitions here.
         The default is 0 -->
    <!--<relays-on-demand>1</relays-on-demand>-->

    <!--
    <relay>
        <server>127.0.0.1</server>
        <port>8080</port>
        <mount>/example.ogg</mount>
        <local-mount>/different.ogg</local-mount>
        <on-demand>0</on-demand>

        <relay-shoutcast-metadata>0</relay-shoutcast-metadata>
    </relay>
    -->


    <!-- Mountpoints
         Only define <mount> sections if you want to use advanced options,
         like alternative usernames or passwords
    -->

    <!-- Default settings for all mounts that don't have a specific <mount type="normal">.
    -->
    <!--
    <mount type="default">
        <public>0</public>
        <intro>/server-wide-intro.ogg</intro>
        <max-listener-duration>3600</max-listener-duration>
        <authentication type="url">
                <option name="mount_add" value="http://auth.example.org/stream_start.php"/>
        </authentication>
        <http-headers>
                <header name="foo" value="bar" />
        </http-headers>
    </mount>
    -->

    <!-- Normal mounts -->
    <!--
    <mount type="normal">
        <mount-name>/example-complex.ogg</mount-name>

        <username>othersource</username>
        <password>hackmemore</password>

        <max-listeners>1</max-listeners>
        <dump-file>/tmp/dump-example1.ogg</dump-file>
        <burst-size>65536</burst-size>
        <fallback-mount>/example2.ogg</fallback-mount>
        <fallback-override>1</fallback-override>
        <fallback-when-full>1</fallback-when-full>
        <intro>/example_intro.ogg</intro>
        <hidden>1</hidden>
        <public>1</public>
        <authentication type="htpasswd">
                <option name="filename" value="myauth"/>
                <option name="allow_duplicate_users" value="0"/>
        </authentication>
        <http-headers>
                <header name="Access-Control-Allow-Origin" value="http://webplayer.example.org" />
                <header name="baz" value="quux" />
        </http-headers>
        <on-connect>/home/icecast/bin/stream-start</on-connect>
        <on-disconnect>/home/icecast/bin/stream-stop</on-disconnect>
    </mount>
    -->

    <!--
    <mount type="normal">
        <mount-name>/auth_example.ogg</mount-name>
        <authentication type="url">
            <option name="mount_add"       value="http://myauthserver.net/notify_mount.php"/>
            <option name="mount_remove"    value="http://myauthserver.net/notify_mount.php"/>
            <option name="listener_add"    value="http://myauthserver.net/notify_listener.php"/>
            <option name="listener_remove" value="http://myauthserver.net/notify_listener.php"/>
            <option name="headers"         value="x-pragma,x-token"/>
            <option name="header_prefix"   value="ClientHeader."/>
        </authentication>
    </mount>
    -->

    <fileserve>1</fileserve>

    <paths>
        <!-- basedir is only used if chroot is enabled -->
        <basedir>/usr/share/icecast2</basedir>

        <!-- Note that if <chroot> is turned on below, these paths must both
             be relative to the new root, not the original root -->
        <logdir>/var/log/icecast2</logdir>
        <webroot>/usr/share/icecast2/web</webroot>
        <adminroot>/usr/share/icecast2/admin</adminroot>
        <!-- <pidfile>/usr/share/icecast2/icecast.pid</pidfile> -->

        <!-- Aliases: treat requests for 'source' path as being for 'dest' path
             May be made specific to a port or bound address using the "port"
             and "bind-address" attributes.
          -->
        <!--
        <alias source="/foo" destination="/bar"/>
        -->
        <!-- Aliases: can also be used for simple redirections as well,
             this example will redirect all requests for http://server:port/ to
             the status page
        -->
        <alias source="/" destination="/status.xsl"/>
        <!-- The certificate file needs to contain both public and private part.
             Both should be PEM encoded.
        <ssl-certificate>/usr/share/icecast2/icecast.pem</ssl-certificate>
        -->
    </paths>

    <logging>
        <accesslog>access.log</accesslog>
        <errorlog>error.log</errorlog>
        <!-- <playlistlog>playlist.log</playlistlog> -->
        <loglevel>3</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
        <logsize>10000</logsize> <!-- Max size of a logfile -->
        <!-- If logarchive is enabled (1), then when logsize is reached
             the logfile will be moved to [error|access|playlist].log.DATESTAMP,
             otherwise it will be moved to [error|access|playlist].log.old.
             Default is non-archive mode (i.e. overwrite)
        -->
        <!-- <logarchive>1</logarchive> -->
    </logging>

    <security>
        <chroot>0</chroot>
        <!--
        <changeowner>
            <user>nobody</user>
            <group>nogroup</group>
        </changeowner>
        -->
    </security>
</icecast>

the only mp3 file in the playlist ./the_playlist.m3u is a 320kbps with all ID3 tags removed using id3v2. the m3u file repeats the same file three times in a row.

here is my log output when running deefuzzer

sudo deefuzzer deefuzzer_station.xml
Segmentation fault
tail /deefuzer_station.log
2019-08-07 15:58:37,867 INFO Core: Starting DeeFuzzer
2019-08-07 15:58:37,867 INFO Core: Using libshout version 2.4.1
2019-08-07 15:58:37,867 INFO Core: Number of stations : 1
2019-08-07 15:58:37,868 INFO Core: Loading new stations
2019-08-07 15:58:37,868 INFO Station http://34.235.153.142:8000/monitor: Opening monitor - My best funky station
2019-08-07 15:58:37,869 INFO Core: Started station Station 0
2019-08-07 15:58:37,877 INFO Station http://34.235.153.142:8000/monitor: Channel available.
2019-08-07 15:58:37,885 INFO Station http://34.235.153.142:8000/monitor: channel connected
2019-08-07 15:58:37,885 INFO Station http://34.235.153.142:8000/monitor: Generating new playlist (3 tracks)
2019-08-07 15:58:37,888 INFO Station http://34.235.153.142:8000/monitor: DeeFuzzing:  id = 2, name = heart.mp3

I hope you can help me get it up and running. thanks.

from deefuzzer.

yomguy avatar yomguy commented on July 18, 2024

Sorry, I am (very) late @clarkenheim !

I cannot reproduce the bug with version 0.7.3 and :

  • without sudo
  • using <log>/tmp/deefuzer_station.log</log>

Could you please retry?

from deefuzzer.

yomguy avatar yomguy commented on July 18, 2024

@clarkenheim also try to kick out heart.mp3

from deefuzzer.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    šŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. šŸ“ŠšŸ“ˆšŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ā¤ļø Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.