1 |
package Frey::Server; |
package Frey::Server; |
2 |
|
|
3 |
use Moose; |
use Moose; |
4 |
|
extends 'Frey'; |
5 |
with 'Frey::Web'; |
with 'Frey::Web'; |
6 |
|
with 'Frey::Config'; |
7 |
|
|
8 |
use Continuity; |
use Continuity; |
9 |
#use Continuity::REPL; |
#use Continuity::REPL; |
37 |
sub run { |
sub run { |
38 |
my ( $self, $port ) = @_; |
my ( $self, $port ) = @_; |
39 |
$server = Continuity->new( |
$server = Continuity->new( |
40 |
port => $port || 16001, |
port => $port || $self->config->{port} || 16001, |
41 |
path_session => 1, |
path_session => 1, |
42 |
cookie_session => 'sid', |
cookie_session => 'sid', |
43 |
callback => \&main, |
callback => \&main, |
80 |
|
|
81 |
my $f; |
my $f; |
82 |
|
|
83 |
my $run_regexp = join('|', Frey::Run->execute ); |
my $run_regexp = join('|', Frey::Run->runnable ); |
84 |
|
|
85 |
if ( |
if ( |
86 |
$path =~ m{/Frey[:-]+ObjectBrowser} |
$path =~ m{/Frey[:-]+ObjectBrowser} |
93 |
$f = Frey::ObjectDesigner->new( fey_class => $params{class} ); |
$f = Frey::ObjectDesigner->new( fey_class => $params{class} ); |
94 |
$f->request( $req ); |
$f->request( $req ); |
95 |
} elsif ( |
} elsif ( |
96 |
|
$path =~ m{/editor(.+?)\+(\d+)} |
97 |
|
) { |
98 |
|
my $editor = $ENV{VISUAL} || $ENV{EDITOR} || 'vi'; |
99 |
|
# FIXME SECURITY path verification for $1 |
100 |
|
my $cmd = "$editor +$2 $1"; |
101 |
|
warn "# $path -> system $cmd"; |
102 |
|
$req->print( $cmd ); |
103 |
|
system( $cmd ); |
104 |
|
return; |
105 |
|
} elsif ( |
106 |
$path =~ m{/([^/]+)/($run_regexp)} |
$path =~ m{/([^/]+)/($run_regexp)} |
107 |
) { |
) { |
108 |
my $class = rest2class $1; |
my $class = rest2class $1; |
109 |
warn "# run $class $2\n"; |
warn "# run $class $2\n"; |
110 |
$f = Frey::Run->new( class => $class, params => \%params ); |
$f = Frey::Run->new( class => $class, params => \%params, run => $2 ); |
111 |
} elsif ( |
} elsif ( |
112 |
$path =~ m{/([^/]+)/?$} |
$path =~ m{/([^/]+)/?$} |
113 |
) { |
) { |
131 |
if ( $@ ) { |
if ( $@ ) { |
132 |
warn $@; |
warn $@; |
133 |
$req->conn->send_error( 404 ); # FIXME this should probably be 500, but we can't ship page with it |
$req->conn->send_error( 404 ); # FIXME this should probably be 500, but we can't ship page with it |
134 |
$req->print( qq{<pre class="error">$@<pre>} ); |
$req->print( qq{<pre class="frey-error">$@<pre>} ); |
135 |
# Carp::REPL::repl; |
# Carp::REPL::repl; |
136 |
|
|
137 |
} |
} |