[Icecast] SOLVED Re: Edited: <on-connect> / <on-disconnect> not working

Jack Elliott that.jack.elliott at gmail.com
Wed Sep 20 20:28:53 UTC 2023


Thank you, Jordan.

It now works. For the next icecast user who needs to get an <on-connect> 
script to run, I am leaving this here.

Okay, icecast2 is not human user, so no /home directory for it.

/etc/passwd tells me:

icecast2:x:112:119::/usr/share/icecast2:/bin/false

So I copy the working (for my user kpovdjs) /home/kpovdjs/.msmtprc file 
to /usr/share/icecast2 , and change owner to user icecast2

kpovdjs at Icecast-Pi:~ $ ls -la /usr/share/icecast2
total 20
drwxr-xr-x   4 root     root 4096 Sep 20 11:31 .
drwxr-xr-x 205 root     root 4096 Jul 13  2022 ..
drwxr-xr-x   2 root     root 4096 Apr 22  2017 admin
-rw-rw-rw-   1 icecast2 root  332 Sep 20 11:31 .msmtprc
drwxr-xr-x   3 kpovdjs  root 4096 May 12  2017 web

So,

icecast2 at Icecast-Pi:/home/kpovdjs$ echo "hello there username." | msmtp -a gmailthatjackelliott at kpov.org
msmtp: /usr/share/icecast2/.msmtprc: must have no more than user read/write permissions

But now msmtp finds the rc file! So chmod 600 to .msmtprc to get

-rw-------   1 icecast2 root  332 Sep 20 11:31 .msmtprc

and try again . . . and . . . it works! email received. One minor 
permissions issue,

msmtp: cannot log to /home/kpovdjs/bin/msmtp_logfile.log: cannot open: Permission denied

So as owner of the logfile.log:

chmod 666 /home/kpovdjs/bin/msmtp_logfile.log

And all is good.

Many thanks to you and the others who helped me debug this routine. Have 
a good day!

-- 
Jack Elliott
Director of Classical Music Programming
High Desert Community Radio
KPOV Bend, Oregon

On 9/20/23 11:18 AM, Jordan Erickson wrote:
> You need to put that msmtp config file in Icecast user's configured 
> home directory. Look in /etc/passwd for that or just 'cd ~' as Icecast 
> user. It's likely not /home/icecast2 if you had to create it yourself 
> manually.
>
>
> Cheers,
> Jordan Erickson
>
> https://subj.am/
> On 9/20/23 11:11, Jack Elliott wrote:
>>
>> Hi Jordan, thank you for the suggestion to try msmtp directly as user 
>> icecast2
>>
>> First I try as user kpovdjs (me):
>>
>> kpovdjs at Icecast-Pi:~/bin $ echo "hello there username." | msmtp -a gmailthatjackelliott at kpov.org
>>
>> This does send the email.
>>
>> Now su to user icecast2
>>
>> icecast2 at Icecast-Pi:/home/kpovdjs/bin$ echo "hello there username." | msmtp -a gmailthatjackelliott at kpov.org
>> msmtp: account gmail not found: no configuration file available
>>
>> Interesting. For user kpovdjs, msmtp finds account information in 
>> /home/kpovdjs/.msmtprc
>>
>> But as user icecast2, there is no .msmtprc file in /home/icecast2
>>
>> In fact, there is no icecast2 folder in /home
>>
>> So I create /home/icecast2
>>
>> I copy my user .msmtprc to /home/icecast2
>>
>> icecast2 at Icecast-Pi:/home/kpovdjs$ ls -la /home/icecast2
>> total 12
>> drwxr-xr-x 2 icecast2 root 4096 Sep 20 10:57 .
>> drwxr-xr-x 5 root     root 4096 Sep 20 10:51 ..
>> -rw-r--r-- 1 icecast2 root  332 Sep 20 10:57 .msmtprc
>>
>> Now I try again:
>>
>> icecast2 at Icecast-Pi:/home/kpovdjs$ echo "hello there username." | msmtp -a gmailthatjackelliott at kpov.org
>> msmtp: account gmail not found: no configuration file available
>>
>> If msmtp cannot find its rc file in /home/icecast2, then maybe there 
>> is a way to specify the location.
>>
>> -- 
>> Jack Elliott
>> Director of Classical Music Programming
>> High Desert Community Radio
>> KPOV Bend, Oregon
>> On 9/20/23 10:35 AM, Jordan Erickson wrote:
>>> Hi Jack,
>>>
>>> Have you tried, as the icecast2 user, interactively using the msmtp 
>>> command instead of with your script? Try this, it will narrow down 
>>> the variables. Also, check to see if your iceast2 user has the 
>>> required group membership(s), if any, to send mail from that machine.
>>>
>>>
>>> Cheers,
>>> Jordan Erickson
>>>
>>> https://subj.am/
>>> On 9/20/23 10:32, Jack Elliott wrote:
>>>>
>>>> Thank you, Philipp Schafft,
>>>>
>>>> Okay my amateur bash script is badly written and I will clean it up.
>>>>
>>>> But I don't think my clumsy scripting explains why I can run the 
>>>> script as user kpovdjs, but not as user icecast2?
>>>>
>>>> It uses /usr/bin/msptp and
>>>>
>>>> kpovdjs at Icecast-Pi:~/bin $ ls -l /usr/bin/msmtp
>>>> -rwxr-xr-x 1 root root 83848 Jun 19  2014 /usr/bin/msmtp
>>>>
>>>> So that isn't a problem.
>>>>
>>>> And the script:
>>>>
>>>> kpovdjs at Icecast-Pi:~/bin $ ls -l email_onconnect.sh
>>>> -rwxrwxrwx 1 kpovdjs kpovdjs 422 Sep 20 10:08 email_onconnect.sh
>>>>
>>>> Yes, I have tried running the script as user kpovdjs and it works. 
>>>> And the same command as user icecast2 does not work and does not 
>>>> make an error message.
>>>>
>>>> Thomas Zumbrunnen wonders about my mount point definition, this is it:
>>>>
>>>>   <mount type="normal">
>>>>          <mount-name>/stream</mount-name>
>>>>          <fallback-mount>/fallbacks/Generic_Silence_192kbps_48kHz.mp3</fallback-mount>
>>>>          <fallback-override>1</fallback-override>
>>>>          <fallback-when-full>1</fallback-when-full>
>>>>           <burst-size>65535</burst-size>
>>>>          <on-connect>/home/kpovdjs/bin/email_onconnect.sh</on-connect>
>>>>          <on-disconnect>/home/kpovdjs/bin/email_ondisconnect.sh</on-disconnect>
>>>>          <no-yp>1</no-yp>
>>>>      </mount>
>>>>
>>>> Thank you, everyone!
>>>>
>>>> -- 
>>>> Jack Elliott
>>>> Director of Classical Music Programming
>>>> High Desert Community Radio
>>>> KPOV Bend, Oregon
>>>> On 9/20/23 8:44 AM, Philipp Schafft wrote:
>>>>> Good morning,
>>>>>
>>>>> On Wed, 2023-09-20 at 08:24 -0700, Jack Elliott wrote:
>>>>>> Hi all,
>>>>>> I am still trying to debug this. Summary, I am using <on-connect> in
>>>>>> my icecast.xml to launch an email when a source-client connects.
>>>>>> Here is the line in icecast.xml:
>>>>>> <on-connect>/home/kpovdjs/bin/email_onconnect.sh</on-connect>
>>>>>> The problem is that this script doesn't do anything when icecast runs
>>>>>> it.
>>>>>> The script works if I run it as user kpovdjs (me). But if I su to
>>>>>> user icecast2, it does nothing.
>>>>>> "email_onconnect.sh" is:
>>>>>> #!/bin/bash
>>>>>> set -x
>>>>>>
>>>>>> #thatjackelliott at kpov.org
>>>>>>
>>>>>> printf "To:thatjackelliott at kpov.org\nFrom:kpovcomputer at gmail.com\nS
>>>>>> ubject: Remote host has connected to mountpoint $1 on the
>>>>>> Backstream\n\n KPOV Icecast server on IcecastPi has detected a
>>>>>> connection on the backstream." > /home/kpovdjs/bin/on_connect.txt
>>>>>> /usr/bin/msmtpthatjackelliott at kpov.org  <
>>>>>> /home/kpovdjs/bin/on_connect.txt  >/home/kpovdjs/bin/msmtp.log 2>&1
>>>>> Your printf is wrong here.
>>>>> NEVER do something like: printf "bla $blubb bla\n";
>>>>> ALWAYS do: printf "bla %s bla\n" "$blubb";
>>>>>
>>>>> That is exactly why we use printf in the first place. This is the
>>>>> reason it exists.
>>>>>
>>>>> Also you can just pipe your output between the commands. No need for a
>>>>> tempfile (which also adds many problems, from permissions to race
>>>>> conditions).
>>>>>
>>>>>
>>>>>> If I run it as user kpovdjs (me), it sends the email, and this is the
>>>>>> debug output:
>>>>>> kpovdjs at Icecast-Pi:~/bin $ ./email_onconnect.sh
>>>>>> + printf 'To:thatjackelliott at kpov.org\nFrom:kpovcomputer at gmail.com\
>>>>>> nSubject: Remote host has connected to mountpoint  on the
>>>>>> Backstream\n\n KPOV Icecast server on IcecastPi has detected a
>>>>>> connection on the backstream.'
>>>>>> + /usr/bin/msmtpthatjackelliott at kpov.org
>>>>>> But as user icecast2, the debug output is the same, but no email
>>>>>> sent:
>>>>>> icecast2 at Icecast-Pi:/home/kpovdjs/bin$ ./email_onconnect.sh
>>>>>> + printf 'To:thatjackelliott at kpov.org\nFrom:kpovcomputer at gmail.com\
>>>>>> nSubject: Remote host has connected to mountpoint  on the
>>>>>> Backstream\n\n KPOV Icecast server on IcecastPi has detected a
>>>>>> connection on the backstream.'
>>>>>> + /usr/bin/msmtpthatjackelliott at kpov.org
>>>>> Are you sure /usr/bin/msmtp works as the Icecast user?
>>>>> Have you tried to run that script as the same user as Icecast?
>>>>> e.g.: sudo -u icecast /path/to/script
>>>>>
>>>>>
>>>>>> For debug purposes, I have rwxrwxrwx permission set from / and down
>>>>>> to and including the script.
>>>>>> -rwxrwxrwx  1 kpovdjs  kpovdjs  414 Sep 17 10:59 email_onconnect.sh
>>>>> I hope that is a really really bad joke.
>>>>>
>>>>>
>>>>>> For further debug purposes, I made a copy of the .sh script and
>>>>>> chowned it to user icecast2.
>>>>>> -rwxr-xr-x  1 icecast2 icecast  414 Sep 20 08:08
>>>>>> email_onconnect_usericecast2.sh
>>>>>> It also does not send the email when I invoke it as user icecast2.
>>>>>> The "set -x" debug output is the same.
>>>>>> At this point it seems that this is not a icecast issue, per se, but
>>>>>> some sneaky subtle weird annoying little Linux thing. However, if
>>>>>> anyone here has an idea on how I might solve it, it would be very
>>>>>> much appreciated.
>>>>> Not the wording I would use.
>>>>>
>>>>> You could check Icecast's error.log to see if it reports a problem.
>>>>>
>>>>> Other than that you really first need to establish that the script
>>>>> actually works running as that user.
>>>>>
>>>>>
>>>>>> Thank you!
>>>>>> ===========================
>>>>>>
>>>>>> Very cool, I haven't encountered the "set -x" debug flag before.
>>>>>> However, the output isn't as interesting as I hoped:
>>>>>>
>>>>>> icecast2 at Icecast-Pi:/home/kpovdjs/bin$ ./email_onconnect.sh
>>>>>> + printf 'To:thatjackelliott at kpov.org\nFrom:kpovcomputer at gmail.com\nS
>>>>>> ubject: Remote host has connected to mountpoint on the Backstream\n\n
>>>>>> KPOV Icecast server on IcecastPi has detected a connection on the
>>>>>> backstream.'
>>>>>> + /usr/bin/msmtpthatjackelliott at kpov.org
>>>>>> icecast2 at Icecast-Pi:/home/kpovdjs/bin$
>>>>>>
>>>>>> Thank you!
>>>>>>
>>>>>>> Hi
>>>>>>>
>>>>>>> For debuging purpose put
>>>>>>> set -x in the row after #!/bin/bash
>>>>>>> and execute the script. Post the whole output here.
>>>>>>>
>>>>>>> Cheers
>>>>>>> Tom
>>>>>>> Am 17. Sept. 2023, 19:42 +0200 schrieb Jack Elliott <
>>>>>>> that.jack.elliott at gmail.com>:
>>>>>>>> Hi Jordan,
>>>>>>>>
>>>>>>>> Here is my script:
>>>>>>>>
>>>>>>>> #!/bin/bash
>>>>>>>>
>>>>>>>> #thatjackelliott at kpov.org
>>>>>>>>
>>>>>>>> printf"To:thatjackelliott at kpov.org\nFrom:kpovcomputer at gmail.com\ 
>>>>>>>> nSubject: Remote host has connected to mountpoint $1 on the 
>>>>>>>> Backstream\n\n KPOV Icecast server on IcecastPi has detected a 
>>>>>>>> connection on the backstream."  >
>>>>>>>> /home/my_username/bin/on_connect.txt
>>>>>>>> /usr/bin/msmtpthatjackelliott at kpov.org <
>>>>>>>> /home/my_username/bin/on_connect.txt
>>>>>>>>> /home/my_username/bin/msmtp.log 2>&1
>>>>>>>> This script has rwx set for everyone (for debugging).
>>>>>>>>
>>>>>>>> Thank you!
>>>>>>>>
>>>>>>>> --
>>>>>>>> Jack Elliott
>>>>>>>> Director of Classical Music Programming
>>>>>>>> High Desert Community Radio
>>>>>>>> KPOV Bend, Oregon
>>>>>>>> On 9/17/23 8:25 AM, Jordan Erickson wrote:
>>>>>>>>> Hi Jack,
>>>>>>>>>
>>>>>>>>> You said:
>>>>>>>>>
>>>>>>>>> ---
>>>>>>>>> Okay now that I am user icecast2, let me see if the script I
>>>>>>>>> want the Icecast server to run <on-connect> runs, so . . .
>>>>>>>>> icecast2 at icecast-Pi: $ ./email_onconnect.sh
>>>>>>>>>
>>>>>>>>> and the prompt returns immediately, no error message, but no
>>>>>>>>> email received. But if I su back to my_username and try the
>>>>>>>>> script, it runs and an email is received.
>>>>>>>>>
>>>>>>>>> ---
>>>>>>>>>
>>>>>>>>> This tells me that your script is not doing what it needs to do
>>>>>>>>> as the Icecast user. Since you're doing it outside of Icecast,
>>>>>>>>> it's not the <on-connect> or <on-disconnect> triggers that are
>>>>>>>>> failing. It would be helpful if you could paste your script
>>>>>>>>> (sensitive info like passwords removed) here.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Cheers,
>>>>>>>>> Jordan
>>>>>>>>> https://subj.am/
>>>>
>>>> _______________________________________________
>>>> Icecast mailing list
>>>> Icecast at xiph.org
>>>> http://lists.xiph.org/mailman/listinfo/icecast
>>>
>>>
>>> _______________________________________________
>>> Icecast mailing list
>>> Icecast at xiph.org
>>> http://lists.xiph.org/mailman/listinfo/icecast
>>
>> _______________________________________________
>> Icecast mailing list
>> Icecast at xiph.org
>> http://lists.xiph.org/mailman/listinfo/icecast
>
>
> _______________________________________________
> Icecast mailing list
> Icecast at xiph.org
> http://lists.xiph.org/mailman/listinfo/icecast
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.xiph.org/pipermail/icecast/attachments/20230920/0dc25f23/attachment.htm>


More information about the Icecast mailing list