Merge branch 'develop' of bitbucket.org:jamkazam/jam-cloud into develop
This commit is contained in:
commit
f5a271c35b
|
|
@ -2,14 +2,15 @@ ActiveAdmin.register JamRuby::PromoLatest, :as => 'Latest' do
|
|||
|
||||
menu :label => 'Home Page Latest'
|
||||
|
||||
config.sort_order = 'position ASC aasm_state DESC updated_at DESC'
|
||||
config.batch_actions = false
|
||||
config.sort_order = ''
|
||||
# config.clear_action_items!
|
||||
config.filters = false
|
||||
|
||||
form :partial => 'form'
|
||||
|
||||
index do
|
||||
column 'Latest' do |pp| pp.latest_display_name end
|
||||
column 'State' do |pp| pp.aasm_state end
|
||||
column 'Position' do |pp| pp.position end
|
||||
column 'Updated' do |pp| pp.updated_at end
|
||||
|
|
@ -18,6 +19,7 @@ ActiveAdmin.register JamRuby::PromoLatest, :as => 'Latest' do
|
|||
|
||||
show do
|
||||
attributes_table do
|
||||
row 'Latest' do |pp| pp.latest_display_name end
|
||||
row 'State' do |obj| obj.aasm_state end
|
||||
row 'Position' do |obj| obj.position end
|
||||
row 'Updated' do |obj| obj.updated_at end
|
||||
|
|
@ -27,23 +29,26 @@ ActiveAdmin.register JamRuby::PromoLatest, :as => 'Latest' do
|
|||
controller do
|
||||
|
||||
def new
|
||||
@promo = JamRuby::PromoBuzz.new
|
||||
@promo = JamRuby::PromoLatest.new
|
||||
@promo.aasm_state = 'active'
|
||||
@latests = PromoLatest.latest_candidates
|
||||
super
|
||||
end
|
||||
|
||||
def create
|
||||
promo = PromoBuzz.create_with_params(params[:jam_ruby_promo_latest])
|
||||
super
|
||||
promo = PromoLatest.create_with_params(params[:jam_ruby_promo_latest])
|
||||
redirect_to('/admin/latests')
|
||||
end
|
||||
|
||||
def edit
|
||||
@promo = resource
|
||||
@latests = PromoLatest.latest_candidates
|
||||
super
|
||||
end
|
||||
|
||||
def update
|
||||
super
|
||||
resource.update_with_params(params[:jam_ruby_promo_latest]).save!
|
||||
redirect_to('/admin/latests')
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
<%= semantic_form_for([:admin, @promo], :html => {:multipart => true}, :url => @promo.new_record? ? admin_latests_path : "/admin/latests/#{@promo.id}") do |f| %>
|
||||
<%= f.inputs :name => "Recording or Session", :for => :latest do |latest_form| %>
|
||||
<%= latest_form.input :id, :as => :select, :collection => @latests.collect { |ll| [ll[:name], ll[:id]] }, :label => "Latest", :required => true, :selected => @promo.latest.try(:id) %>
|
||||
<% end %>
|
||||
<%= f.inputs do %>
|
||||
<%= f.input(:position, :label => "Position", :input_html => {:maxlength => 4}) %>
|
||||
<%= f.input(:aasm_state, :as => :select, :collection => Promotional::STATES, :label => 'Status') %>
|
||||
|
|
|
|||
|
|
@ -42,16 +42,16 @@ create table icecast_admin_authentications (
|
|||
-- The default username for all source connections is 'source' but
|
||||
-- this option allows to specify a default password. This and the username
|
||||
-- can be changed in the individual mount sections.
|
||||
source_password VARCHAR NOT NULL DEFAULT 'icejam321',
|
||||
source_password VARCHAR(64) NOT NULL DEFAULT 'icejam321',
|
||||
|
||||
-- Used in the master server as part of the authentication when a slave requests
|
||||
-- the list of streams to relay. The default username is 'relay'
|
||||
relay_user VARCHAR NOT NULL DEFAULT 'relay',
|
||||
relay_password VARCHAR NOT NULL DEFAULT 'jkrelayhack',
|
||||
relay_user VARCHAR(64) NOT NULL DEFAULT 'relay',
|
||||
relay_password VARCHAR(64) NOT NULL DEFAULT 'jkrelayhack',
|
||||
|
||||
--The username/password used for all administration functions.
|
||||
admin_user VARCHAR NOT NULL DEFAULT 'jkadmin',
|
||||
admin_password VARCHAR NOT NULL DEFAULT 'jKadmin123',
|
||||
admin_user VARCHAR(64) NOT NULL DEFAULT 'jkadmin',
|
||||
admin_password VARCHAR(64) NOT NULL DEFAULT 'jKadmin123',
|
||||
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
|
|
@ -60,10 +60,10 @@ create table icecast_admin_authentications (
|
|||
|
||||
--contains all the settings for listing a stream on any of the Icecast2 YP Directory servers.
|
||||
-- Multiple occurances of this section can be specified in order to be listed on multiple directory servers.
|
||||
create table icecast_directorys (
|
||||
create table icecast_directories (
|
||||
id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(),
|
||||
yp_url_timeout integer not null default 15,
|
||||
yp_url character not null UNIQUE default 'http://dir.xiph.org/cgi-bin/yp-cgi',
|
||||
yp_url_timeout INTEGER not null default 15,
|
||||
yp_url VARCHAR(1024) not null UNIQUE default 'http://dir.xiph.org/cgi-bin/yp-cgi',
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
|
@ -73,11 +73,11 @@ create table icecast_servermiscs (
|
|||
-- This is the DNS name or IP address that will be used for the stream directory lookups or possibily
|
||||
-- the playlist generation if a Host header is not provided. While localhost is shown as an example,
|
||||
-- in fact you will want something that your listeners can use.
|
||||
hostname character not null default 'concertsvr.jamkazam.com',
|
||||
hostname VARCHAR(256) not null default 'concertsvr.jamkazam.com',
|
||||
--This sets the location string for this icecast instance. It will be shown e.g in the web interface.
|
||||
location character not null default 'earth',
|
||||
location VARCHAR(128) not null default 'earth',
|
||||
--This should contain contact details for getting in touch with the server administrator.
|
||||
admin character not null default 'icemaster@localhost',
|
||||
admin VARCHAR(128) not null default 'icemaster@localhost',
|
||||
-- This flag turns on the icecast2 fileserver from which static files can be served.
|
||||
-- All files are served relative to the path specified in the <paths><webroot> configuration
|
||||
-- setting. By default the setting is enabled so that requests for the images
|
||||
|
|
@ -86,7 +86,7 @@ create table icecast_servermiscs (
|
|||
-- This optional setting allows for the administrator of the server to override the
|
||||
-- default server identification. The default is icecast followed by a version number
|
||||
-- and most will not care to change it however this setting will change that.
|
||||
server_id character not null default 'icecast 2.3',
|
||||
server_id VARCHAR(128) not null default 'icecast 2.3',
|
||||
|
||||
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
|
@ -97,13 +97,13 @@ create table icecast_listen_sockets (
|
|||
id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(),
|
||||
|
||||
-- The TCP port that will be used to accept client connections.
|
||||
port integer not null default 8001,
|
||||
port INTEGER not null default 8001,
|
||||
|
||||
-- An optional IP address that can be used to bind to a specific network card.
|
||||
-- If not supplied, then it will bind to all interfaces.
|
||||
bind_address character,
|
||||
bind_address VARCHAR(128),
|
||||
|
||||
shoutcast_mount character default NULL,
|
||||
shoutcast_mount VARCHAR(128) default NULL,
|
||||
shoutcast_compat INTEGER not null default 0,
|
||||
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
|
@ -115,15 +115,15 @@ create table icecast_mastersvr_relays (
|
|||
id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(),
|
||||
|
||||
-- ip address of the master icecast server and port number
|
||||
master_server character not null,
|
||||
master_server_port integer not null,
|
||||
master_server VARCHAR(128) not null,
|
||||
master_server_port INTEGER not null,
|
||||
--The interval (in seconds) that the Relay Server will poll the Master Server for any new mountpoints to relay.
|
||||
master_update_interval integer not null default 120,
|
||||
master_update_interval INTEGER not null default 120,
|
||||
|
||||
-- This is the relay username on the master server. It is used to query the server for a list of
|
||||
-- mountpoints to relay. If not specified then 'relay' is used
|
||||
master_username character not null default 'relay',
|
||||
master_password character not null,
|
||||
master_username VARCHAR(64) not null default 'relay',
|
||||
master_password VARCHAR(64) not null,
|
||||
|
||||
--Global on-demand setting for relays. Because you do not have individual relay options when
|
||||
-- using a master server relay, you still may want those relays to only pull the stream when
|
||||
|
|
@ -141,50 +141,51 @@ create table icecast_relays (
|
|||
id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(),
|
||||
|
||||
-- ip address of server we are relaying from and port number
|
||||
server character not null,
|
||||
port integer not null default 8001,
|
||||
server VARCHAR(128) not null,
|
||||
port INTEGER not null default 8001,
|
||||
|
||||
-- mount at server. eg /example.ogg
|
||||
mount character not null,
|
||||
mount VARCHAR(128) not null,
|
||||
-- eg /different.ogg
|
||||
local_mount character not null,
|
||||
local_mount VARCHAR(128) not null,
|
||||
-- eg joe. could be null
|
||||
username character default NULL ,
|
||||
username VARCHAR(64) default NULL ,
|
||||
-- user password
|
||||
password character default null ,
|
||||
password VARCHAR(64) default null ,
|
||||
relay_shoutcast_metadata INTEGER default 0,
|
||||
--- relay only if we have someone wanting to listen
|
||||
on_demand INTEGER default 0,
|
||||
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
create TABLE icecast_user_authentications(
|
||||
id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(),
|
||||
--"htpasswd or url"
|
||||
type CHARACTER DEFAULT NULL ,
|
||||
-- real name is type
|
||||
stype VARCHAR(16) DEFAULT NULL ,
|
||||
-- these are for httpasswd
|
||||
filename CHARACTER default NULL,
|
||||
filename VARCHAR(256) default NULL,
|
||||
allow_duplicate_users INTEGER DEFAULT 0,
|
||||
|
||||
-- these options are for url
|
||||
-- eg value="http://myauthserver.com/stream_start.php"
|
||||
mount_add CHARACTER default NULL,
|
||||
mount_add VARCHAR(256) default NULL,
|
||||
--value="http://myauthserver.com/stream_end.php"
|
||||
mount_remove CHARACTER default NULL,
|
||||
mount_remove VARCHAR(256) default NULL,
|
||||
--value="http://myauthserver.com/listener_joined.php"
|
||||
listener_add CHARACTER default NULL,
|
||||
listener_add VARCHAR(256) default NULL,
|
||||
--value="http://myauthserver.com/listener_left.php"
|
||||
listener_remove CHARACTER default NULL,
|
||||
listener_remove VARCHAR(256) default NULL,
|
||||
-- value="user"
|
||||
username CHARACTER default NULL,
|
||||
username VARCHAR(64) default NULL,
|
||||
-- value="pass"
|
||||
password CHARACTER default NULL,
|
||||
password VARCHAR(64) default NULL,
|
||||
-- value="icecast-auth-user: 1"
|
||||
auth_header CHARACTER default NULL,
|
||||
auth_header VARCHAR(64) default NULL,
|
||||
-- value="icecast-auth-timelimit:"
|
||||
timelimit_header CHARACTER default NULL,
|
||||
timelimit_header VARCHAR(64) default NULL,
|
||||
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
|
|
@ -194,20 +195,20 @@ create TABLE icecast_user_authentications(
|
|||
create table icecast_mounts (
|
||||
id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(),
|
||||
-- eg/example-complex.ogg
|
||||
mount_name CHARACTER UNIQUE NOT NULL,
|
||||
username CHARACTER NOT NULL DEFAULT 'jamsource',
|
||||
password CHARACTER NOT NULL DEFAULT 'jamksource',
|
||||
mount_name VARCHAR(128) UNIQUE NOT NULL,
|
||||
username VARCHAR(64) NOT NULL DEFAULT 'jamsource',
|
||||
password VARCHAR(64) NOT NULL DEFAULT 'jamksource',
|
||||
max_listeners INTEGER NOT NULL DEFAULT 4,
|
||||
max_listener_duration INTEGER NOT NULL DEFAULT 3600,
|
||||
-- dump of the stream coming through on this mountpoint.
|
||||
-- eg /tmp/dump-example1.ogg
|
||||
dump_file CHARACTER DEFAULT NULL,
|
||||
dump_file VARCHAR(256) DEFAULT NULL,
|
||||
|
||||
-- intro music to play
|
||||
-- This optional value specifies a mountpoint that clients are automatically moved to
|
||||
-- if the source shuts down or is not streaming at the time a listener connects.
|
||||
intro CHARACTER NOT NULL DEFAULT '/intro.ogg',
|
||||
fallback_mount CHARACTER NOT NULL DEFAULT '/sourcedown.ogg',
|
||||
intro VARCHAR(256) NOT NULL DEFAULT '/intro.ogg',
|
||||
fallback_mount VARCHAR(256) NOT NULL DEFAULT '/sourcedown.ogg',
|
||||
-- When enabled, this allows a connecting source client or relay on this mountpoint
|
||||
-- to move listening clients back from the fallback mount.
|
||||
fallback_override INTEGER DEFAULT 1,
|
||||
|
|
@ -218,19 +219,21 @@ create table icecast_mounts (
|
|||
|
||||
--For non-Ogg streams like MP3, the metadata that is inserted into the stream often
|
||||
-- has no defined character set.
|
||||
charset CHARACTER NOT NULL DEFAULT 'ISO8859-1',
|
||||
charset VARCHAR(256) NOT NULL DEFAULT 'ISO8859-1',
|
||||
-- possilble values are -1, 0, 1
|
||||
public INTEGER DEFAULT 1,
|
||||
-- real name is public but this is reserved word in ruby
|
||||
publicc INTEGER DEFAULT 1,
|
||||
|
||||
stream_name VARCHAR NOT NULL DEFAULT 'My Jamkazam Audio Stream',
|
||||
stream_description VARCHAR NOT NULL DEFAULT 'My JK audio description',
|
||||
stream_name VARCHAR(256) NOT NULL DEFAULT 'My Jamkazam Audio Stream',
|
||||
stream_description VARCHAR(256) NOT NULL DEFAULT 'My JK audio description',
|
||||
-- direct to user page
|
||||
stream_url CHARACTER NOT NULL DEFAULT 'http://wwww.jamakazam.com#user_id',
|
||||
stream_url VARCHAR(256) NOT NULL DEFAULT 'http://wwww.jamakazam.com#user_id',
|
||||
-- get this from the session info
|
||||
genre VARCHAR NOT NULL DEFAULT 'Unknown',
|
||||
genre VARCHAR(64) NOT NULL DEFAULT 'Unknown',
|
||||
bitrate integer NOT NULL default 92,
|
||||
type CHARACTER NOT NULL DEFAULT 'application/ogg' ,
|
||||
subtype CHARACTER NOT NULL DEFAULT 'vorbis',
|
||||
-- real name is type but this is reserved name in ruby
|
||||
mtype VARCHAR(64) NOT NULL DEFAULT 'application/ogg' ,
|
||||
subtype VARCHAR(64) NOT NULL DEFAULT 'vorbis',
|
||||
-- Enable this to prevent this mount from being shown on the xsl pages.
|
||||
-- This is mainly for cases where a local relay is configured and you do
|
||||
-- not want the source of the local relay to be shown
|
||||
|
|
@ -242,25 +245,25 @@ create table icecast_mounts (
|
|||
mp3_metadata_interval INTEGER DEFAULT 4096,
|
||||
|
||||
--called when the source connects or disconnects. The scripts are called with the name of the mount
|
||||
on_connect CHARACTER DEFAULT '/home/icecast/bin/source-start',
|
||||
on_disconnect CHARACTER DEFAULT '/home/icecast/bin/source-end',
|
||||
on_connect VARCHAR(256) DEFAULT '/home/icecast/bin/source-start',
|
||||
on_disconnect VARCHAR(256) DEFAULT '/home/icecast/bin/source-end',
|
||||
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
auth_id VARCHAR(64) NOT NULL REFERENCES icecast_user_authentications(id)
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
|
||||
create table icecast_paths (
|
||||
id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(),
|
||||
basedir CHARACTER NOT NULL DEFAULT './',
|
||||
logdir CHARACTER NOT NULL DEFAULT './logs',
|
||||
pidfile CHARACTER NOT NULL DEFAULT './icecast.pid',
|
||||
webroot CHARACTER NOT NULL DEFAULT './web',
|
||||
adminroot CHARACTER NOT NULL DEFAULT './admin',
|
||||
allow_ip CHARACTER NOT NULL DEFAULT '/path/to/ip_allowlist',
|
||||
deny_ip CHARACTER NOT NULL DEFAULT '/path_to_ip_denylist',
|
||||
alias CHARACTER DEFAULT 'source="/foo" dest="/bar"',
|
||||
basedir VARCHAR(256) NOT NULL DEFAULT './',
|
||||
logdir VARCHAR(256) NOT NULL DEFAULT './logs',
|
||||
pidfile VARCHAR(256) NOT NULL DEFAULT './icecast.pid',
|
||||
webroot VARCHAR(256) NOT NULL DEFAULT './web',
|
||||
adminroot VARCHAR(256) NOT NULL DEFAULT './admin',
|
||||
allow_ip VARCHAR(256) NOT NULL DEFAULT '/path/to/ip_allowlist',
|
||||
deny_ip VARCHAR(256) NOT NULL DEFAULT '/path_to_ip_denylist',
|
||||
--real name is alias but alias is reserved in ruby
|
||||
aliass VARCHAR(256) DEFAULT 'source="/foo" dest="/bar"',
|
||||
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
|
|
@ -269,9 +272,9 @@ create table icecast_paths (
|
|||
|
||||
create table icecast_loggings (
|
||||
id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(),
|
||||
accesslog CHARACTER NOT NULL DEFAULT 'access.log',
|
||||
errorlog CHARACTER NOT NULL DEFAULT 'error.log',
|
||||
playlistlog CHARACTER NOT NULL DEFAULT 'playlist.log',
|
||||
accesslog VARCHAR(256) NOT NULL DEFAULT 'access.log',
|
||||
errorlog VARCHAR(256) NOT NULL DEFAULT 'error.log',
|
||||
playlistlog VARCHAR(256) NOT NULL DEFAULT 'playlist.log',
|
||||
-- 4 Debug, 3 Info, 2 Warn, 1 Error
|
||||
loglevel INTEGER NOT NULL DEFAULT 4 ,
|
||||
|
||||
|
|
@ -280,12 +283,12 @@ create table icecast_loggings (
|
|||
);
|
||||
|
||||
|
||||
create table icecast_securitys (
|
||||
create table icecast_securities (
|
||||
id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(),
|
||||
|
||||
chroot INTEGER NOT NULL DEFAULT 0,
|
||||
changeowner_user CHARACTER DEFAULT 'nobody',
|
||||
changeowner_group CHARACTER DEFAULT 'nogroup',
|
||||
changeowner_user VARCHAR(64) DEFAULT 'nobody',
|
||||
changeowner_group VARCHAR(64) DEFAULT 'nogroup',
|
||||
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ require "postgres-copy"
|
|||
require "geokit-rails"
|
||||
require "postgres_ext"
|
||||
require 'builder'
|
||||
require 'cgi'
|
||||
|
||||
require "jam_ruby/constants/limits"
|
||||
require "jam_ruby/constants/notification_types"
|
||||
|
|
|
|||
|
|
@ -1,9 +1,73 @@
|
|||
|
||||
module JSONable
|
||||
def jdumpXml (ovb, nm, ident=1, output=$stdout)
|
||||
|
||||
serialized = Hash.new
|
||||
ovb.myattr_accessor.each do |attribute|
|
||||
#serialized[attribute] = ovb[attribute]
|
||||
puts "attribute = #{attribute}"
|
||||
#serialized[attribute] = self.public_send attribute
|
||||
end
|
||||
|
||||
hash = serialized
|
||||
|
||||
tb = "\t"
|
||||
tbs = tb * ident
|
||||
tbse = tb * (ident-1)
|
||||
|
||||
output.puts "#{tbse}<#{nm}>"
|
||||
hash.each do |key, val|
|
||||
#puts "attrib: key=#{key} val=#{val}"
|
||||
|
||||
el = key
|
||||
if key.present?
|
||||
el = key.gsub(/_/, '-')
|
||||
end
|
||||
|
||||
|
||||
sv = val
|
||||
if val.to_s.empty?
|
||||
#skip ???
|
||||
else
|
||||
if val.instance_of? String
|
||||
#encode the string to be xml safe
|
||||
sv = CGI.escapeHTML(val)
|
||||
end
|
||||
end
|
||||
output.puts "#{tbs}<#{el}>#{sv}</#{el}>"
|
||||
end
|
||||
puts "#{tbse}</#{nm}>"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
module JamRuby
|
||||
class IcecastAdminAuthentication < ActiveRecord::Base
|
||||
include JSONable
|
||||
|
||||
attr_accessible :source_password, :relay_user, :relay_password, :admin_user, :admin_password
|
||||
#myattr_accessor = [:source_password, :relay_user, :relay_password, :admin_user, :admin_password ]
|
||||
|
||||
after_initialize :init
|
||||
|
||||
protected
|
||||
def init
|
||||
#set only if nil
|
||||
self.source_password ||= "UndefinedSourcePassword"
|
||||
self.admin_password ||= "JKAminPw"
|
||||
end
|
||||
|
||||
public
|
||||
self.primary_key = 'id'
|
||||
|
||||
validates :source_password, length: {minimum: 5}
|
||||
validates :source_password, presence: true, length: {minimum: 5}
|
||||
validates :admin_password, presence: true, length: {minimum: 5}
|
||||
|
||||
def dumpXml (ident=1, output=$stdout)
|
||||
self.jdumpXml(self,"authentication", ident,output)
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
|
|
@ -3,7 +3,8 @@ module JamRuby
|
|||
|
||||
self.primary_key = 'id'
|
||||
|
||||
|
||||
attr_accessible :yp_url_timeout, :yp_url
|
||||
attr_accessor :yp_url_timeout, :yp_url
|
||||
|
||||
end
|
||||
end
|
||||
|
|
@ -1,12 +1,34 @@
|
|||
module JamRuby
|
||||
class IcecastLimit < ActiveRecord::Base
|
||||
include JSONable
|
||||
|
||||
self.primary_key = 'id'
|
||||
|
||||
attr_accessible :clients, :sources, :queue_size, :client_timeout, :header_timeout, :source_timeout, :burst_size
|
||||
#attr_accessor :clients, :sources, :queue_size, :client_timeout, :header_timeout, :source_timeout, :burst_size
|
||||
|
||||
#validates :clients, numericality: {only_integer: true}, length: {in: 1..15000}
|
||||
validates :clients, numericality: {only_integer: true}
|
||||
|
||||
def dumpXml()
|
||||
after_initialize :init
|
||||
|
||||
|
||||
def init
|
||||
puts "Init self.client #{self.clients}"
|
||||
self.clients ||= 10000
|
||||
self.sources ||= 1000
|
||||
self.queue_size ||= 102400
|
||||
self.client_timeout ||= 30
|
||||
self.header_timeout ||= 15
|
||||
self.source_timeout ||= 10
|
||||
self.burst_size ||= 65536
|
||||
end
|
||||
|
||||
def setclients(val)
|
||||
@clients = val
|
||||
end
|
||||
def dumpXml (ident=1, output=$stdout)
|
||||
self.jdumpXml(self, "limits", ident, output)
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
|
|
@ -3,6 +3,13 @@ module JamRuby
|
|||
|
||||
self.primary_key = 'id'
|
||||
|
||||
attr_accessible :port, :bind_address, :shoutcast_mount, :shoutcast_compat
|
||||
attr_accessor :port, :bind_address, :shoutcast_mount, :shoutcast_compat
|
||||
|
||||
def dumpXml()
|
||||
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
|
|
@ -3,7 +3,12 @@ module JamRuby
|
|||
|
||||
self.primary_key = 'id'
|
||||
|
||||
attr_accessible :accesslog, :errorlog, :playlistlog, :loglevel
|
||||
attr_accessor :accesslog, :errorlog, :playlistlog, :loglevel
|
||||
|
||||
def dumpXml()
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
|
@ -2,6 +2,11 @@ module JamRuby
|
|||
class IcecastMastersvrRelay < ActiveRecord::Base
|
||||
|
||||
self.primary_key = 'id'
|
||||
attr_accessible :master_server, :master_server_port, :master_username, :master_password, :relays_on_demand
|
||||
attr_accessible :master_server, :master_server_port, :master_username, :master_password, :relays_on_demand
|
||||
|
||||
def dumpXml()
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -3,7 +3,22 @@ module JamRuby
|
|||
|
||||
self.primary_key = 'id'
|
||||
|
||||
attr_accessible :mount_name, :username, :password, :max_listeners, :max_listener_duration, :dump_file
|
||||
attr_accessor :mount_name, :username, :password, :max_listeners, :max_listener_duration, :dump_file
|
||||
|
||||
attr_accessible :intro, :fallback_mount, :fallback_override, :fallback_when_full, :charset
|
||||
attr_accessor :intro, :fallback_mount, :fallback_override, :fallback_when_full, :charset
|
||||
|
||||
attr_accessible :publicc, :stream_name, :stream_description, :stream_url, :genre, :bitrate
|
||||
attr_accessor :publicc, :stream_name, :stream_description, :stream_url, :genre, :bitrate
|
||||
|
||||
attr_accessible :mtype, :subtype, :hidden, :burst_size, :mp3_metadata_interval, :on_connect, :on_disconnect
|
||||
attr_accessor :mtype, :subtype, :hidden, :burst_size, :mp3_metadata_interval, :on_connect, :on_disconnect
|
||||
|
||||
has_one :authentication, :class_name => "IcecastUserAuthentication"
|
||||
|
||||
def dumpXml()
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -3,7 +3,12 @@ module JamRuby
|
|||
|
||||
self.primary_key = 'id'
|
||||
|
||||
attr_accessible :basedir, :logdir, :pidfile, :webroot, :adminroot, :allow_ip, :deny_ip, :aliass
|
||||
attr_accessor :basedir, :logdir, :pidfile, :webroot, :adminroot, :allow_ip, :deny_ip, :aliass
|
||||
|
||||
def dumpXml()
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
|
@ -3,6 +3,12 @@ module JamRuby
|
|||
|
||||
self.primary_key = 'id'
|
||||
|
||||
attr_accessible :server, :port, :mount, :local_mount, :username, :password, :relay_shoutcast_metadata, :on_demand
|
||||
attr_accessor :server, :port, :mount, :local_mount, :username, :password, :relay_shoutcast_metadata, :on_demand
|
||||
|
||||
def dumpXml()
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
|
@ -3,7 +3,12 @@ module JamRuby
|
|||
|
||||
self.primary_key = 'id'
|
||||
|
||||
attr_accessible :chroot, :changeowner_user, :changeowner_group
|
||||
attr_accessor :chroot, :changeowner_user, :changeowner_group
|
||||
|
||||
def dumpXml()
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
|
@ -14,5 +14,10 @@ module JamRuby
|
|||
has_one :path, :class_name => "JamRuby::IcecastPath"
|
||||
has_one :logging, :class_name => "JamRuby::IcecastLogging"
|
||||
has_one :security, :class_name => "JamRuby::IceCastSecurity"
|
||||
|
||||
def dumpXml()
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
|
@ -3,5 +3,12 @@ module JamRuby
|
|||
|
||||
self.primary_key = 'id'
|
||||
|
||||
attr_accessible :hostname, :location, :admin, :fileserve, :server_id
|
||||
attr_accessor :hostname, :location, :admin, :fileserve, :server_id
|
||||
|
||||
def dumpXml()
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
|
@ -3,6 +3,15 @@ module JamRuby
|
|||
|
||||
self.primary_key = 'id'
|
||||
|
||||
attr_accessible :stype, :filename, :allow_duplicate_users, :mount_add, :mount_remove,
|
||||
:listener_add, :listener_remove, :username, :password, :auth_header, :timelimit_header
|
||||
|
||||
attr_accessor :stype, :filename, :allow_duplicate_users, :mount_add, :mount_remove,
|
||||
:listener_add, :listener_remove, :username, :password, :auth_header, :timelimit_header
|
||||
|
||||
|
||||
def dumpXml()
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -1,7 +1,9 @@
|
|||
class JamRuby::Promotional < ActiveRecord::Base
|
||||
self.table_name = :promotionals
|
||||
|
||||
attr_accessible :expires_at, :position, :aasm_state
|
||||
default_scope :order => 'aasm_state ASC, position ASC, updated_at DESC'
|
||||
|
||||
attr_accessible :position, :aasm_state
|
||||
|
||||
include AASM
|
||||
HIDDEN_STATE = :hidden
|
||||
|
|
@ -32,6 +34,10 @@ class JamRuby::Promotional < ActiveRecord::Base
|
|||
aasm_state
|
||||
end
|
||||
|
||||
def self.active_promotionals
|
||||
self.where(:aasm_state => ACTIVE_STATE).limit(100)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class JamRuby::PromoBuzz < JamRuby::Promotional
|
||||
|
|
@ -41,6 +47,8 @@ class JamRuby::PromoBuzz < JamRuby::Promotional
|
|||
obj = self.new
|
||||
obj.text_short = params[:text_short]
|
||||
obj.text_long = params[:text_long]
|
||||
obj.position = params[:position]
|
||||
obj.aasm_state = params[:aasm_state]
|
||||
obj.save!
|
||||
obj
|
||||
end
|
||||
|
|
@ -63,4 +71,57 @@ end
|
|||
class JamRuby::PromoLatest < JamRuby::Promotional
|
||||
belongs_to :latest, :polymorphic => true
|
||||
|
||||
attr_accessible :latest
|
||||
|
||||
def self.latest_candidates
|
||||
recordings = Recording
|
||||
.where('music_session_id IS NOT NULL')
|
||||
.order('created_at DESC')
|
||||
.limit(10)
|
||||
sessions = MusicSession
|
||||
.where("music_sessions.id NOT IN ('#{recordings.map(&:music_session_id).join("','")}')")
|
||||
.order('created_at DESC')
|
||||
.limit(10)
|
||||
latests = (recordings + sessions).sort { |o1,o2| o2.created_at <=> o1.created_at }
|
||||
latests.collect do |ll|
|
||||
nm = if ll.is_a?(Recording)
|
||||
"#{ll.class.name.demodulize}: #{ll.band.present? ? ll.band.name : ll.owner.name}"
|
||||
else
|
||||
"#{ll.class.name.demodulize}: #{ll.band.present? ? ll.band.name : ll.creator.name}"
|
||||
end
|
||||
{ :name => nm, :id => ll.id, :record => ll }
|
||||
end
|
||||
end
|
||||
|
||||
def self.create_with_params(params)
|
||||
obj = self.new
|
||||
obj.update_with_params(params)
|
||||
obj.save!
|
||||
obj
|
||||
end
|
||||
|
||||
def update_with_params(params)
|
||||
if (latest_id = params[:latest][:id]).present?
|
||||
self.latest = Recording.where(:id => latest_id).limit(1).all[0] ||
|
||||
MusicSession.where(:id => latest_id).limit(1).all[0]
|
||||
end
|
||||
self.position = params[:position]
|
||||
self.aasm_state = params[:aasm_state]
|
||||
self
|
||||
end
|
||||
|
||||
def self.latest_display_name(ll)
|
||||
return '' unless ll
|
||||
nm = if ll.is_a?(Recording)
|
||||
ll.band.present? ? ll.band.name : ll.owner.name
|
||||
else
|
||||
ll.band.present? ? ll.band.name : ll.creator.name
|
||||
end
|
||||
"#{ll.class.name.demodulize}: #{nm} (#{ll.created_at})"
|
||||
end
|
||||
|
||||
def latest_display_name
|
||||
self.class.latest_display_name(self.latest)
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
|
|
@ -5,11 +5,21 @@ describe IcecastAdminAuthentication do
|
|||
let(:admin) { IcecastAdminAuthentication.new }
|
||||
|
||||
before(:all) do
|
||||
|
||||
admin.source_password = "GoodJob@</>"
|
||||
end
|
||||
|
||||
it "save" do
|
||||
admin.save.should be_true
|
||||
admin.save!
|
||||
#puts "source password #{admin.source_password}"
|
||||
#puts "id #{admin.id}"
|
||||
#puts admin.errors
|
||||
#puts admin.inspect
|
||||
#puts admin.to_yaml
|
||||
#puts JSON.pretty_generate admin
|
||||
#puts admin.dumpXml (1)
|
||||
#puts admin.errors.inspect
|
||||
admin.errors.any?.should be_false
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe IcecastDirectory do
|
||||
|
||||
let(:idir) { IcecastDirectory.new }
|
||||
|
||||
before(:all) do
|
||||
|
||||
end
|
||||
|
||||
it "save" do
|
||||
idir.save.should be_true
|
||||
end
|
||||
|
||||
end
|
||||
|
|
@ -9,12 +9,22 @@ describe IcecastLimit do
|
|||
end
|
||||
|
||||
it "save" do
|
||||
limit.save.should be_true
|
||||
limit.clients = 9999
|
||||
limit.save
|
||||
puts limit.inspect
|
||||
#limit.dumpXml
|
||||
limit.errors.any?.should be_false
|
||||
v = IcecastLimit.find(limit.id)
|
||||
puts v.inspect
|
||||
end
|
||||
|
||||
it "non-integer clients should be checked" do
|
||||
limit.clients = "a"
|
||||
=begin
|
||||
it "non-integer clients should be checked" do
|
||||
limit.setclients 'a'
|
||||
puts limit.clients
|
||||
puts limit.inspect
|
||||
limit.save.should be_false
|
||||
limit.errors[:clients].should == ['is not a number']
|
||||
end
|
||||
=end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe IcecastListenSocket do
|
||||
|
||||
let(:iobj) { IcecastListenSocket.new }
|
||||
|
||||
before(:all) do
|
||||
|
||||
end
|
||||
|
||||
it "save" do
|
||||
iobj.save.should be_true
|
||||
end
|
||||
|
||||
end
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe IcecastLogging do
|
||||
|
||||
let(:iobj) { IcecastLogging.new }
|
||||
|
||||
before(:all) do
|
||||
|
||||
end
|
||||
|
||||
it "save" do
|
||||
iobj.save.should be_true
|
||||
end
|
||||
|
||||
end
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe IcecastMastersvrRelay do
|
||||
|
||||
let(:iobj) { IcecastMastersvrRelay.new }
|
||||
|
||||
before(:all) do
|
||||
|
||||
end
|
||||
|
||||
|
||||
=begin
|
||||
it "should not save" do
|
||||
iobj.save.should be_false
|
||||
iobj.errors[:master_server].should_equal "is required"
|
||||
end
|
||||
=end
|
||||
|
||||
it "should save" do
|
||||
iobj.master_server = "test.www.com"
|
||||
iobj.master_server_port = 7111
|
||||
iobj.master_username = "hack"
|
||||
iobj.master_password = "hackme"
|
||||
iobj.save.should be_true
|
||||
end
|
||||
|
||||
end
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe IcecastMount do
|
||||
|
||||
let(:iobj) { IcecastMount.new }
|
||||
|
||||
before(:all) do
|
||||
|
||||
end
|
||||
|
||||
=begin
|
||||
it "save" do
|
||||
iobj.save.should be_true
|
||||
end
|
||||
=end
|
||||
|
||||
end
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe IcecastPath do
|
||||
|
||||
let(:iobj) { IcecastPath.new }
|
||||
|
||||
before(:all) do
|
||||
|
||||
end
|
||||
|
||||
it "save" do
|
||||
iobj.save.should be_true
|
||||
end
|
||||
|
||||
end
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe IcecastRelay do
|
||||
|
||||
let(:iobj) { IcecastRelay.new }
|
||||
|
||||
before(:all) do
|
||||
|
||||
end
|
||||
|
||||
=begin
|
||||
it "save" do
|
||||
:iobj.save.should be_true
|
||||
end
|
||||
=end
|
||||
|
||||
end
|
||||
|
|
@ -3,13 +3,15 @@ require 'factory_girl'
|
|||
namespace :db do
|
||||
desc "Add a simple one track recording to the database"
|
||||
task single_recording: :environment do
|
||||
@user = User.find_by_email('test@jamkazam.com')
|
||||
User.where(:musician => true).order('RANDOM()').limit(10).each do |uu|
|
||||
@user = uu
|
||||
next if @user.connections.present?
|
||||
@connection = FactoryGirl.create(:connection, :user => @user)
|
||||
@track = FactoryGirl.create(:track, :connection => @connection, :instrument => Instrument.find('violin'), :client_track_id => "t1")
|
||||
@music_session = FactoryGirl.create(:music_session, :creator => @user, :musician_access => true)
|
||||
@music_session.connections << @connection
|
||||
@music_session.save
|
||||
@recording = FactoryGirl.create(:recording, :music_session => @music_session, :owner => @user, :id=>"r1")
|
||||
@recording = FactoryGirl.create(:recording, :music_session => @music_session, :owner => @user, :id=>"R#{rand(10000)}")
|
||||
@recorded_track = RecordedTrack.create_from_track(@track, @recording)
|
||||
@recorded_track.save
|
||||
#@recording = Recording.start(@music_session, @user)
|
||||
|
|
@ -19,6 +21,7 @@ namespace :db do
|
|||
@recording.claim(@user, "name", "description", @genre, true, true)
|
||||
@recording.reload
|
||||
@claimed_recording = @recording.claimed_recordings.first
|
||||
end
|
||||
end
|
||||
|
||||
task clean: :environment do
|
||||
|
|
|
|||
Loading…
Reference in New Issue