Changeset 16

Show
Ignore:
Timestamp:
10/16/2006 10:50:22 (2 years ago)
Author:
why
Message:
  • lib/hoodwinkd/models.rb: methods to check for globs.
  • lib/hoodwinkd/controllers.rb: use globs in the setup and wink calls.
  • lib/hoodwinkd/dial.rb: allow asterisks in the domain name.
  • lib/hoodwink.rb: load onslaught and dial by default.
  • bin/hoodwinkd: a+x.
Location:
trunk
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • trunk/bin/hoodwinkd

    r11 r16  
    44require 'hoodwinkd' 
    55 
    6 # extensions to the core 
    7 require 'hoodwinkd/dial' 
    8 require 'hoodwinkd/onslaught' 
    9 require 'hoodwinkd/summaries' 
    10  
    116Hoodwinkd.connect File.expand_path('../../config/database.yml', __FILE__) 
    127Hoodwinkd.create 
  • trunk/lib/hoodwinkd.rb

    r11 r16  
    66Camping.goes :Hoodwinkd 
    77 
    8 DOMAIN = '[\w\-\.]+\.\w+' 
     8DOMAIN = '[\w\-\*\.]+\.\w+' 
    99STATIC = File.expand_path('../../static', __FILE__) 
    1010SALT = "" 
    1111 
    1212require 'mimetypes_hash' 
     13 
     14# the raw guts 
    1315require 'hoodwinkd/helpers' 
    1416require 'hoodwinkd/models' 
    1517require 'hoodwinkd/controllers' 
    1618require 'hoodwinkd/views' 
     19 
     20# the niceties 
     21require 'hoodwinkd/dial' 
     22require 'hoodwinkd/onslaught' 
     23require 'hoodwinkd/summaries' 
    1724 
    1825module Hoodwinkd::UserSession 
  • trunk/lib/hoodwinkd/controllers.rb

    r15 r16  
    1212    class Setup < R "/(#{DOMAIN})/setup" 
    1313        def get(domain) 
    14             layers =  
    15                 Site.find_by_sql [<<-END, domain] 
    16                     SELECT l.name, l.fullpost_qvars, l.css, l.fullpost_xpath, l.fullpost_url_match, 
    17                            s.domain, s.enabled, s.created_at 
    18                     FROM hoodwinkd_sites s, hoodwinkd_layers l 
    19                     WHERE s.domain = ? AND l.site_id = s.id 
    20                 END 
     14            layers = Site.find_setup(domain) 
    2115            output_json(layers) do |layer|  
    2216                layer['fullpost_qvars'] = layer['fullpost_qvars'].to_s.split(/\s*,\s+/) 
     
    106100            pass_in = decrypt( @user.security_token, @input.hoodwink_passc[32,32], @input.hoodwink_passc[0,32] ) 
    107101            if pass_in == decrypt( @user.security_token, @user.password ) 
     102                layer = Site.find_setup(domain).first 
     103                if layer.domain != domain 
     104                    site = AliasedSite.create(:creator_id => @user.id, :domain => domain, :linked_site => layer) 
     105                    linklayer = Layer.create(:site => site, :name => '-') 
     106                end 
    108107                @post = Post.find_by_sql([<<-END, domain, @permalink]).first 
    109108                    SELECT p.*, IFNULL(s.real_domain, s.domain) AS real_domain 
  • trunk/lib/hoodwinkd/dial.rb

    r11 r16  
    77                @layer = @site.layers[0] 
    88            end 
    9             @layer ||= Layer.new 
     9            @layer ||= Layer.new(:name => 'Root') 
    1010        end 
    1111        def get(domain) 
  • trunk/lib/hoodwinkd/models.rb

    r11 r16  
    124124                GROUP BY s.id ORDER BY s.created_at DESC, s.id ASC LIMIT #{count.to_i} 
    125125            } 
     126        end 
     127        def self.globs(domain) 
     128            parts = domain.split('.') 
     129            [domain] + (1..parts.length-1).map { |x| "*.#{parts[x..-1].join('.')}" } 
     130        end 
     131        def self.find_setup(domain) 
     132            layers = nil 
     133            globs(domain).each do |gdom| 
     134                layers =  
     135                    Site.find_by_sql [<<-END, gdom] 
     136                        SELECT s.*, l.name, l.fullpost_qvars, l.css, l.fullpost_xpath, l.fullpost_url_match 
     137                        FROM hoodwinkd_sites s, hoodwinkd_layers l 
     138                        WHERE s.domain = ? AND l.site_id = s.id AND l.fullpost_xpath IS NOT NULL 
     139                    END 
     140                break unless layers.blank? 
     141            end 
     142            layers 
    126143        end 
    127144    end