diff --git a/admin/config/routes.rb b/admin/config/routes.rb index ebc1b9790..b2b66d95e 100644 --- a/admin/config/routes.rb +++ b/admin/config/routes.rb @@ -1,3 +1,5 @@ +require 'resque/server' + JamAdmin::Application.routes.draw do # ActiveAdmin::Devise.config, @@ -12,6 +14,8 @@ JamAdmin::Application.routes.draw do match '/api/artifacts' => 'artifacts#update_artifacts', :via => :post + mount Resque::Server.new, :at => "/resque" + # The priority is based upon order of creation: # first created -> highest priority. diff --git a/db/up/icecast.sql b/db/up/icecast.sql index b167890ac..01385f055 100644 --- a/db/up/icecast.sql +++ b/db/up/icecast.sql @@ -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 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 diff --git a/db/up/mix_job_watch.sql b/db/up/mix_job_watch.sql new file mode 100644 index 000000000..e69de29bb diff --git a/ruby/lib/jam_ruby.rb b/ruby/lib/jam_ruby.rb index 0b566c55d..41885bfcf 100755 --- a/ruby/lib/jam_ruby.rb +++ b/ruby/lib/jam_ruby.rb @@ -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" diff --git a/ruby/lib/jam_ruby/models/icecast_admin_authentication.rb b/ruby/lib/jam_ruby/models/icecast_admin_authentication.rb index 3abd1696c..d94aeb1d1 100644 --- a/ruby/lib/jam_ruby/models/icecast_admin_authentication.rb +++ b/ruby/lib/jam_ruby/models/icecast_admin_authentication.rb @@ -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}" + end + puts "#{tbse}" + 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 \ No newline at end of file diff --git a/ruby/lib/jam_ruby/models/icecast_directory.rb b/ruby/lib/jam_ruby/models/icecast_directory.rb index 7d5fd4b45..f86a7f7c9 100644 --- a/ruby/lib/jam_ruby/models/icecast_directory.rb +++ b/ruby/lib/jam_ruby/models/icecast_directory.rb @@ -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 \ No newline at end of file diff --git a/ruby/lib/jam_ruby/models/icecast_limit.rb b/ruby/lib/jam_ruby/models/icecast_limit.rb index 006ee6e69..2e006c7e1 100644 --- a/ruby/lib/jam_ruby/models/icecast_limit.rb +++ b/ruby/lib/jam_ruby/models/icecast_limit.rb @@ -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 diff --git a/ruby/lib/jam_ruby/models/icecast_listen_socket.rb b/ruby/lib/jam_ruby/models/icecast_listen_socket.rb index f6d13f7c0..b4e1741f8 100644 --- a/ruby/lib/jam_ruby/models/icecast_listen_socket.rb +++ b/ruby/lib/jam_ruby/models/icecast_listen_socket.rb @@ -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 \ No newline at end of file diff --git a/ruby/lib/jam_ruby/models/icecast_logging.rb b/ruby/lib/jam_ruby/models/icecast_logging.rb index 457afc2a2..a2aa1cc88 100644 --- a/ruby/lib/jam_ruby/models/icecast_logging.rb +++ b/ruby/lib/jam_ruby/models/icecast_logging.rb @@ -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 \ No newline at end of file diff --git a/ruby/lib/jam_ruby/models/icecast_mastersvr_relay.rb b/ruby/lib/jam_ruby/models/icecast_mastersvr_relay.rb index 2ff4239f0..cd949c3d2 100644 --- a/ruby/lib/jam_ruby/models/icecast_mastersvr_relay.rb +++ b/ruby/lib/jam_ruby/models/icecast_mastersvr_relay.rb @@ -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 \ No newline at end of file diff --git a/ruby/lib/jam_ruby/models/icecast_mount.rb b/ruby/lib/jam_ruby/models/icecast_mount.rb index 6627f3ddd..47731cbf1 100644 --- a/ruby/lib/jam_ruby/models/icecast_mount.rb +++ b/ruby/lib/jam_ruby/models/icecast_mount.rb @@ -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 \ No newline at end of file diff --git a/ruby/lib/jam_ruby/models/icecast_path.rb b/ruby/lib/jam_ruby/models/icecast_path.rb index 434d7839c..a6f01e122 100644 --- a/ruby/lib/jam_ruby/models/icecast_path.rb +++ b/ruby/lib/jam_ruby/models/icecast_path.rb @@ -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 \ No newline at end of file diff --git a/ruby/lib/jam_ruby/models/icecast_relay.rb b/ruby/lib/jam_ruby/models/icecast_relay.rb index e0228df0f..19d9b275d 100644 --- a/ruby/lib/jam_ruby/models/icecast_relay.rb +++ b/ruby/lib/jam_ruby/models/icecast_relay.rb @@ -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 \ No newline at end of file diff --git a/ruby/lib/jam_ruby/models/icecast_sercurity.rb b/ruby/lib/jam_ruby/models/icecast_sercurity.rb index 510fd95c3..318c055ed 100644 --- a/ruby/lib/jam_ruby/models/icecast_sercurity.rb +++ b/ruby/lib/jam_ruby/models/icecast_sercurity.rb @@ -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 \ No newline at end of file diff --git a/ruby/lib/jam_ruby/models/icecast_server.rb b/ruby/lib/jam_ruby/models/icecast_server.rb index f015f35ac..8f837edc8 100644 --- a/ruby/lib/jam_ruby/models/icecast_server.rb +++ b/ruby/lib/jam_ruby/models/icecast_server.rb @@ -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 \ No newline at end of file diff --git a/ruby/lib/jam_ruby/models/icecast_servermisc.rb b/ruby/lib/jam_ruby/models/icecast_servermisc.rb index d620f032e..881a1c811 100644 --- a/ruby/lib/jam_ruby/models/icecast_servermisc.rb +++ b/ruby/lib/jam_ruby/models/icecast_servermisc.rb @@ -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 \ No newline at end of file diff --git a/ruby/lib/jam_ruby/models/icecast_user_authentication.rb b/ruby/lib/jam_ruby/models/icecast_user_authentication.rb index ec6974093..12d4f1520 100644 --- a/ruby/lib/jam_ruby/models/icecast_user_authentication.rb +++ b/ruby/lib/jam_ruby/models/icecast_user_authentication.rb @@ -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 \ No newline at end of file diff --git a/ruby/spec/jam_ruby/models/icecast_admin_authentication_spec.rb b/ruby/spec/jam_ruby/models/icecast_admin_authentication_spec.rb index d5cd83588..3eb1d5b18 100644 --- a/ruby/spec/jam_ruby/models/icecast_admin_authentication_spec.rb +++ b/ruby/spec/jam_ruby/models/icecast_admin_authentication_spec.rb @@ -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 diff --git a/ruby/spec/jam_ruby/models/icecast_directory_spec.rb b/ruby/spec/jam_ruby/models/icecast_directory_spec.rb index e69de29bb..8e04dbf3a 100644 --- a/ruby/spec/jam_ruby/models/icecast_directory_spec.rb +++ b/ruby/spec/jam_ruby/models/icecast_directory_spec.rb @@ -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 diff --git a/ruby/spec/jam_ruby/models/icecast_limit_spec.rb b/ruby/spec/jam_ruby/models/icecast_limit_spec.rb index aa3c34bdf..f23378430 100644 --- a/ruby/spec/jam_ruby/models/icecast_limit_spec.rb +++ b/ruby/spec/jam_ruby/models/icecast_limit_spec.rb @@ -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 diff --git a/ruby/spec/jam_ruby/models/icecast_listen_socket_spec.rb b/ruby/spec/jam_ruby/models/icecast_listen_socket_spec.rb index e69de29bb..f7bd08e2d 100644 --- a/ruby/spec/jam_ruby/models/icecast_listen_socket_spec.rb +++ b/ruby/spec/jam_ruby/models/icecast_listen_socket_spec.rb @@ -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 diff --git a/ruby/spec/jam_ruby/models/icecast_logging_spec.rb b/ruby/spec/jam_ruby/models/icecast_logging_spec.rb index e69de29bb..fa0d67b4c 100644 --- a/ruby/spec/jam_ruby/models/icecast_logging_spec.rb +++ b/ruby/spec/jam_ruby/models/icecast_logging_spec.rb @@ -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 \ No newline at end of file diff --git a/ruby/spec/jam_ruby/models/icecast_mastersvr_relay_spec.rb b/ruby/spec/jam_ruby/models/icecast_mastersvr_relay_spec.rb index e69de29bb..6e53e42de 100644 --- a/ruby/spec/jam_ruby/models/icecast_mastersvr_relay_spec.rb +++ b/ruby/spec/jam_ruby/models/icecast_mastersvr_relay_spec.rb @@ -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 \ No newline at end of file diff --git a/ruby/spec/jam_ruby/models/icecast_mount_spec.rb b/ruby/spec/jam_ruby/models/icecast_mount_spec.rb index e69de29bb..04d63aa3b 100644 --- a/ruby/spec/jam_ruby/models/icecast_mount_spec.rb +++ b/ruby/spec/jam_ruby/models/icecast_mount_spec.rb @@ -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 \ No newline at end of file diff --git a/ruby/spec/jam_ruby/models/icecast_path_spec.rb b/ruby/spec/jam_ruby/models/icecast_path_spec.rb index e69de29bb..15015e93a 100644 --- a/ruby/spec/jam_ruby/models/icecast_path_spec.rb +++ b/ruby/spec/jam_ruby/models/icecast_path_spec.rb @@ -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 \ No newline at end of file diff --git a/ruby/spec/jam_ruby/models/icecast_relay_spec.rb b/ruby/spec/jam_ruby/models/icecast_relay_spec.rb index e69de29bb..27b3c3c08 100644 --- a/ruby/spec/jam_ruby/models/icecast_relay_spec.rb +++ b/ruby/spec/jam_ruby/models/icecast_relay_spec.rb @@ -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 \ No newline at end of file