Merge branch '2.0.x' into devel

Conflicts:
	VERSION
	airtime_mvc/application/models/Systemstatus.php
	install_minimal/include/airtime-constants.php
	install_minimal/include/airtime-upgrade.php
	python_apps/api_clients/api_client.py
	python_apps/media-monitor/install/media-monitor-copy-files.py
	python_apps/media-monitor/install/media-monitor-initialize.py
	python_apps/pypo/install/pypo-initialize.py
	python_apps/pypo/liquidsoap_bin
	python_apps/pypo/pypopush.py
	utils/airtime-log.php
This commit is contained in:
Martin Konecny 2012-04-12 19:08:55 -04:00
commit f96b990275
23 changed files with 121 additions and 30 deletions

View file

@ -1,3 +1,11 @@
=======
CREDITS
=======
Version 2.0.3
-------------
Same as previous version.
======= =======
CREDITS CREDITS
======= =======

View file

@ -1,3 +1,8 @@
2.0.3 - April 3rd, 2012
* Bug Fixes:
* monit user should have read-only permissions by default
* pypo user's shell should be /bin/false by default
2.0.2 - February 28, 2012 2.0.2 - February 28, 2012
* Bug Fixes: * Bug Fixes:
* Fixed Airtime could stop automatically playing after 24 hours if the web interface isn't used (regression in 2.0.1). * Fixed Airtime could stop automatically playing after 24 hours if the web interface isn't used (regression in 2.0.1).
@ -8,6 +13,7 @@
* Other * Other
* Various optimizations to make Airtime feel snappier in the browser. Various views should * Various optimizations to make Airtime feel snappier in the browser. Various views should
load much quicker. load much quicker.
2.0.1 - February 14, 2012 2.0.1 - February 14, 2012
* Changes: * Changes:
* Widgets should have a version string so users can make sure widgets are up to date * Widgets should have a version string so users can make sure widgets are up to date

View file

@ -2,7 +2,7 @@
#-e Causes bash script to exit if any of the installers #-e Causes bash script to exit if any of the installers
#return with a non-zero return value. #return with a non-zero return value.
if [ `whoami` != 'root' ]; then if [[ $EUID -ne 0 ]]; then
echo "Please run as root user." echo "Please run as root user."
exit 1 exit 1
fi fi

View file

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
#Check if root user #Check if root user
if [ `whoami` != 'root' ]; then if [[ $EUID -ne 0 ]]; then
echo "Please run as root user." echo "Please run as root user."
exit 1 exit 1
fi fi

View file

@ -33,7 +33,7 @@ class AirtimeInstall
public static function ExitIfNotRoot() public static function ExitIfNotRoot()
{ {
// Need to check that we are superuser before running this. // Need to check that we are superuser before running this.
if(exec("whoami") != "root"){ if(posix_geteuid() != 0){
echo "Must be root user.\n"; echo "Must be root user.\n";
exit(1); exit(1);
} }

View file

@ -2,7 +2,7 @@
#-e Causes bash script to exit if any of the installers #-e Causes bash script to exit if any of the installers
#return with a non-zero return value. #return with a non-zero return value.
if [ `whoami` != 'root' ]; then if [[ $EUID -ne 0 ]]; then
echo "Please run as root user." echo "Please run as root user."
exit 1 exit 1
fi fi

View file

@ -2,7 +2,7 @@
#-e Causes bash script to exit if any of the installers #-e Causes bash script to exit if any of the installers
#return with a non-zero return value. #return with a non-zero return value.
if [ `whoami` != 'root' ]; then if [[ $EUID -ne 0 ]]; then
echo "Please run as root user." echo "Please run as root user."
exit 1 exit 1
fi fi

View file

@ -2,7 +2,7 @@
#-e Causes bash script to exit if any of the installers #-e Causes bash script to exit if any of the installers
#return with a non-zero return value. #return with a non-zero return value.
if [ `whoami` != 'root' ]; then if [[ $EUID -ne 0 ]]; then
echo "Please run as root user." echo "Please run as root user."
exit 1 exit 1
fi fi

View file

@ -2,7 +2,7 @@
#-e Causes bash script to exit if any of the installers #-e Causes bash script to exit if any of the installers
#return with a non-zero return value. #return with a non-zero return value.
if [ `whoami` != 'root' ]; then if [[ $EUID -ne 0 ]]; then
echo "Please run as root user." echo "Please run as root user."
exit 1 exit 1
fi fi

View file

@ -11,7 +11,7 @@ require_once(__DIR__.'/airtime-constants.php');
require_once(dirname(__FILE__).'/AirtimeIni.php'); require_once(dirname(__FILE__).'/AirtimeIni.php');
require_once(dirname(__FILE__).'/AirtimeInstall.php'); require_once(dirname(__FILE__).'/AirtimeInstall.php');
if(exec("whoami") != "root"){ if(posix_geteuid() != 0){
echo "Must be root user.\n"; echo "Must be root user.\n";
exit(1); exit(1);
} }
@ -111,10 +111,13 @@ if (strcmp($version, "2.0.2") < 0){
passthru("php --php-ini $SCRIPTPATH/../airtime-php.ini $SCRIPTPATH/../upgrades/airtime-2.0.2/airtime-upgrade.php"); passthru("php --php-ini $SCRIPTPATH/../airtime-php.ini $SCRIPTPATH/../upgrades/airtime-2.0.2/airtime-upgrade.php");
pause(); pause();
} }
if (strcmp($version, "2.1.0") < 0){ if (strcmp($version, "2.0.3") < 0){
passthru("php --php-ini $SCRIPTPATH/../airtime-php.ini $SCRIPTPATH/../upgrades/airtime-2.1.0/airtime-upgrade.php"); passthru("php --php-ini $SCRIPTPATH/../airtime-php.ini $SCRIPTPATH/../upgrades/airtime-2.0.3/airtime-upgrade.php");
pause(); pause();
} }
if (strcmp($version, "2.1.0") < 0){
passthru("php --php-ini $SCRIPTPATH/../airtime-php.ini $SCRIPTPATH/../upgrades/airtime-2.1.0/airtime-upgrade.php");
}
//set the new version in the database. //set the new version in the database.
$sql = "DELETE FROM cc_pref WHERE keystr = 'system_version'"; $sql = "DELETE FROM cc_pref WHERE keystr = 'system_version'";

View file

@ -0,0 +1,75 @@
<?php
/**
* @package Airtime
* @subpackage StorageServer
* @copyright 2010 Sourcefabric O.P.S.
* @license http://www.gnu.org/licenses/gpl.txt
*/
/*
* In the future, most Airtime upgrades will involve just mutating the
* data that is stored on the system. For example, The only data
* we need to preserve between versions is the database, /etc/airtime, and
* /srv/airtime. Everything else is just binary files that can be removed/replaced
* with the new version of Airtime. Of course, the data may need to be in a new
* format, and that's what this upgrade script will be for.
*/
class AirtimeStorWatchedDirsUpgrade{
public static function start(){
}
}
/* This class deals with any modifications to config files in /etc/airtime
* as well as backups. All functions other than start() should be marked
* as private. */
class AirtimeConfigFileUpgrade{
public static function start(){
}
}
/* This class deals with any modifications to config files in /etc/airtime
* as well as backups. All functions other than start() should be marked
* as private. */
class AirtimeMiscUpgrade{
public static function start(){
self::modifyPypo();
self::modifyMonitPassword();
self::updateMonitConfFiles();
}
public static function modifyPypo(){
echo "* Modifying User Pypo".PHP_EOL;
exec("usermod -s /bin/false pypo");
exec("passwd --delete pypo");
}
public static function modifyMonitPassword(){
echo "* Generating Monit password".PHP_EOL;
copy(__DIR__."/monit-airtime-generic.cfg", "/etc/monit/conf.d/monit-airtime-generic.cfg");
$pass = self::GenerateRandomString(10);
exec("sed -i 's/\$admin_pass/$pass/g' /etc/monit/conf.d/monit-airtime-generic.cfg");
}
public static function updateMonitConfFiles(){
echo "* Updating Monit Conf Files".PHP_EOL;
@unlink("/etc/monit/conf.d/monit-airtime-show-recorder.cfg");
}
public static function GenerateRandomString($p_len=20, $p_chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789')
{
$string = '';
for ($i = 0; $i < $p_len; $i++)
{
$pos = mt_rand(0, strlen($p_chars)-1);
$string .= $p_chars{$pos};
}
return $string;
}
}
AirtimeConfigFileUpgrade::start();
AirtimeMiscUpgrade::start();

View file

@ -0,0 +1,6 @@
set daemon 10 # Poll at 10 second intervals
set logfile /var/log/monit.log
set httpd port 2812
allow admin:$admin_pass
allow guest:airtime read-only

View file

@ -669,4 +669,4 @@ class AirTimeApiClient(ApiClientInterface):
logger.error('Exception: %s', e) logger.error('Exception: %s', e)
logger.error("traceback: %s", top) logger.error("traceback: %s", top)
return response return response

View file

@ -11,13 +11,7 @@ def create_user(username):
if (output[0:3] != "uid"): if (output[0:3] != "uid"):
# Make the pypo user # Make the pypo user
print " * Creating user "+username print " * Creating user "+username
os.system("adduser --system --quiet --group --shell /bin/bash "+username) os.system("adduser --system --quiet --group "+username)
#set pypo password
p = os.popen('/usr/bin/passwd pypo 1>/dev/null 2>&1', 'w')
p.write('pypo\n')
p.write('pypo\n')
p.close()
else: else:
print "User already exists." print "User already exists."
#add pypo to audio group #add pypo to audio group

View file

@ -50,7 +50,6 @@ try:
#copy monit files #copy monit files
shutil.copy('%s/../../monit/monit-airtime-generic.cfg'%current_script_dir, '/etc/monit/conf.d/') shutil.copy('%s/../../monit/monit-airtime-generic.cfg'%current_script_dir, '/etc/monit/conf.d/')
subprocess.call('sed -i "s/\$admin_pass/%s/g" /etc/monit/conf.d/monit-airtime-generic.cfg' % get_rand_string(), shell=True) subprocess.call('sed -i "s/\$admin_pass/%s/g" /etc/monit/conf.d/monit-airtime-generic.cfg' % get_rand_string(), shell=True)
shutil.copy('%s/../monit-airtime-media-monitor.cfg'%current_script_dir, '/etc/monit/conf.d/') shutil.copy('%s/../monit-airtime-media-monitor.cfg'%current_script_dir, '/etc/monit/conf.d/')
#create log dir #create log dir

View file

@ -9,7 +9,7 @@ if os.geteuid() != 0:
try: try:
print "Waiting for media-monitor processes to stop...", print "Waiting for media-monitor processes to stop...",
if (os.path.exists('/etc/init.d/airtime-media-monitor')): if (os.path.exists('/etc/init.d/airtime-media-monitor')):
p = Popen("/etc/init.d/airtime-media-monitor stop", shell=True) p = Popen("invoke-rc.d airtime-media-monitor stop", shell=True)
sts = os.waitpid(p.pid, 0)[1] sts = os.waitpid(p.pid, 0)[1]
print "OK" print "OK"
else: else:

View file

@ -29,7 +29,7 @@ try:
print 'Error loading config file: ', e print 'Error loading config file: ', e
sys.exit(1) sys.exit(1)
os.system("/etc/init.d/airtime-media-monitor stop") os.system("invoke-rc.d airtime-media-monitor stop")
os.system("rm -f /etc/init.d/airtime-media-monitor") os.system("rm -f /etc/init.d/airtime-media-monitor")
os.system("update-rc.d -f airtime-media-monitor remove >/dev/null 2>&1") os.system("update-rc.d -f airtime-media-monitor remove >/dev/null 2>&1")

View file

@ -27,6 +27,9 @@ def create_dir(path):
os.makedirs(path) os.makedirs(path)
except Exception, e: except Exception, e:
pass pass
def get_rand_string(length=10):
return ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(length))
def get_rand_string(length=10): def get_rand_string(length=10):
return ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(length)) return ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(length))

View file

@ -224,10 +224,6 @@ class PypoPush(Thread):
problem_start_time = queue_item['start'] problem_start_time = queue_item['start']
break break
iteration+=1 iteration+=1
return (problem_at_iteration, problem_start_time) return (problem_at_iteration, problem_start_time)

View file

@ -33,8 +33,9 @@ class AirtimeCheck {
public static function ExitIfNotRoot() public static function ExitIfNotRoot()
{ {
// Need to check that we are superuser before running this. // Need to check that we are superuser before running this.
$user = exec("whoami"); $euid = posix_geteuid();
if($user != "root" && $user != "www-data"){ $user = posix_getlogin();
if($euid != 0 && $user != "www-data"){
echo "Must be root user.\n"; echo "Must be root user.\n";
exit(1); exit(1);
} }

View file

@ -18,7 +18,7 @@ logging.disable(50)
# add ch to logger # add ch to logger
logger.addHandler(ch) logger.addHandler(ch)
if (commands.getoutput("whoami") != 'root'): if (os.geteuid() != 0):
print 'Must be a root user.' print 'Must be a root user.'
sys.exit() sys.exit()

View file

@ -30,7 +30,7 @@ array_filter($log_files, "file_exists");
function exitIfNotRoot() function exitIfNotRoot()
{ {
// Need to check that we are superuser before running this. // Need to check that we are superuser before running this.
if(exec("whoami") != "root"){ if(posix_geteuid() != 0){
echo "Must be root user.\n"; echo "Must be root user.\n";
exit(1); exit(1);
} }

View file

@ -101,7 +101,7 @@ if(Application_Model_Preference::GetPlanLevel() == 'disabled'){
function exitIfNotRoot() function exitIfNotRoot()
{ {
// Need to check that we are superuser before running this. // Need to check that we are superuser before running this.
if(exec("whoami") != "root"){ if(posix_geteuid() != 0){
echo "Must be root user.\n"; echo "Must be root user.\n";
exit(1); exit(1);
} }