Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
emulab-devel
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
Elijah Grubb
emulab-devel
Commits
597f0a26
Commit
597f0a26
authored
Dec 07, 2010
by
Leigh B Stoller
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Clean up XMLROC error codes, and use 503 instead of 511 for server too
busy error.
parent
68771283
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
22 additions
and
15 deletions
+22
-15
protogeni/xmlrpc/protogeni-wrapper.pl.in
protogeni/xmlrpc/protogeni-wrapper.pl.in
+22
-15
No files found.
protogeni/xmlrpc/protogeni-wrapper.pl.in
View file @
597f0a26
...
@@ -105,7 +105,7 @@ if ($MAINSITE) {
...
@@ -105,7 +105,7 @@ if ($MAINSITE) {
my
$uptime
=
`
uptime
`;
my
$uptime
=
`
uptime
`;
if
(
$uptime
=~
/load averages:\s+([\.\d]+),\s+([\.\d]+),\s+[\.\d]+/
)
{
if
(
$uptime
=~
/load averages:\s+([\.\d]+),\s+([\.\d]+),\s+[\.\d]+/
)
{
if
(
$
1
>
10.0
)
{
if
(
$
1
>
10.0
)
{
XMLError
(
5
11
,
"
Server is WAY too busy; please try again later
");
XMLError
(
5
03
,
"
Server is WAY too busy; please try again later
");
}
}
}
}
}
}
...
@@ -123,7 +123,7 @@ if ($MAINSITE) {
...
@@ -123,7 +123,7 @@ if ($MAINSITE) {
#
#
if
(
!
(
exists
(
$ENV
{'
SSL_CLIENT_VERIFY
'})
&&
if
(
!
(
exists
(
$ENV
{'
SSL_CLIENT_VERIFY
'})
&&
$ENV
{'
SSL_CLIENT_VERIFY
'}
eq
"
SUCCESS
"))
{
$ENV
{'
SSL_CLIENT_VERIFY
'}
eq
"
SUCCESS
"))
{
XMLError
(
-
1
,
"
Invalid or missing certificate
");
XMLError
(
XMLRPC_APPLICATION_ERROR
()
,
"
Invalid or missing certificate
");
}
}
#
#
...
@@ -180,7 +180,7 @@ elsif (defined($MODULE) && ($MODULE eq $AM_MODULE)) {
...
@@ -180,7 +180,7 @@ elsif (defined($MODULE) && ($MODULE eq $AM_MODULE)) {
# Do not expect a UUID if calling to the AM.
# Do not expect a UUID if calling to the AM.
}
}
else
{
else
{
XMLError
(
-
1
,
"
Invalid certificate; no UUID
");
XMLError
(
XMLRPC_APPLICATION_ERROR
()
,
"
Invalid certificate; no UUID
");
}
}
#
#
...
@@ -190,14 +190,16 @@ if (exists($ENV{'SSL_CLIENT_CERT'})) {
...
@@ -190,14 +190,16 @@ if (exists($ENV{'SSL_CLIENT_CERT'})) {
my
$x509
=
eval
{
my
$x509
=
eval
{
Crypt::OpenSSL::
X509
->
new_from_string
(
$ENV
{'
SSL_CLIENT_CERT
'});
};
Crypt::OpenSSL::
X509
->
new_from_string
(
$ENV
{'
SSL_CLIENT_CERT
'});
};
if
(
$@
)
{
if
(
$@
)
{
XMLError
(
-
1
,
"
Invalid certificate: $@
");
XMLError
(
XMLRPC_APPLICATION_ERROR
()
,
"
Invalid certificate: $@
");
}
}
my
$cert
=
$x509
->
as_string
(
Crypt::OpenSSL::X509::
FORMAT_ASN1
);
my
$cert
=
$x509
->
as_string
(
Crypt::OpenSSL::X509::
FORMAT_ASN1
);
XMLError
(
-
1
,
"
Could not convert certificate to ASN1
")
XMLError
(
XMLRPC_APPLICATION_ERROR
(),
"
Could not convert certificate to ASN1
")
if
(
!
defined
(
$cert
)
||
$cert
eq
'');
if
(
!
defined
(
$cert
)
||
$cert
eq
'');
my
$decoded
=
Crypt::
X509
->
new
(
cert
=>
$cert
);
my
$decoded
=
Crypt::
X509
->
new
(
cert
=>
$cert
);
if
(
$decoded
->
error
)
{
if
(
$decoded
->
error
)
{
XMLError
(
-
1
,
"
Error decoding certificate:
"
.
$decoded
->
error
);
XMLError
(
XMLRPC_APPLICATION_ERROR
(),
"
Error decoding certificate:
"
.
$decoded
->
error
);
}
}
foreach
my
$tmp
(
@
{
$decoded
->
SubjectAltName
})
{
foreach
my
$tmp
(
@
{
$decoded
->
SubjectAltName
})
{
if
(
$tmp
=~
/^uniformResourceIdentifier=(urn:publicid:.*)$/
||
if
(
$tmp
=~
/^uniformResourceIdentifier=(urn:publicid:.*)$/
||
...
@@ -206,7 +208,8 @@ if (exists($ENV{'SSL_CLIENT_CERT'})) {
...
@@ -206,7 +208,8 @@ if (exists($ENV{'SSL_CLIENT_CERT'})) {
}
}
}
}
}
}
XMLError
(
-
1
,
"
Invalid authentication certificate; no URN. Please regenerate.
")
XMLError
(
XMLRPC_APPLICATION_ERROR
(),
"
Invalid authentication certificate; no URN. Please regenerate.
")
if
(
!
exists
(
$ENV
{'
GENIURN
'}));
if
(
!
exists
(
$ENV
{'
GENIURN
'}));
#
#
...
@@ -219,7 +222,7 @@ if (!defined($request)) {
...
@@ -219,7 +222,7 @@ if (!defined($request)) {
}
}
if
(
!
defined
(
$MODULE
)
||
!
exists
(
$GENI_MODULES
{
$MODULE
}))
{
if
(
!
defined
(
$MODULE
)
||
!
exists
(
$GENI_MODULES
{
$MODULE
}))
{
XMLError
(
-
1
,
"
Invalid module specification
")
XMLError
(
XMLRPC_APPLICATION_ERROR
()
,
"
Invalid module specification
")
}
}
my
$file
=
$GENI_MODULES
{
$MODULE
};
my
$file
=
$GENI_MODULES
{
$MODULE
};
...
@@ -228,12 +231,13 @@ my $return = do $file;
...
@@ -228,12 +231,13 @@ my $return = do $file;
if
(
!
defined
(
$return
))
{
if
(
!
defined
(
$return
))
{
SENDMAIL
(
$TBOPS
,
"
Error loading module
",
SENDMAIL
(
$TBOPS
,
"
Error loading module
",
(
$@
?
$@
:
(
$!
?
$!
:
Dumper
(
%ENV
))));
(
$@
?
$@
:
(
$!
?
$!
:
Dumper
(
%ENV
))));
XMLError
(
-
1
,
"
Internal error loading module
");
XMLError
(
XMLRPC_APPLICATION_ERROR
()
,
"
Internal error loading module
");
}
}
if
(
!
(
defined
(
$GENI_METHODS
)
&&
defined
(
$EMULAB_PEMFILE
)))
{
if
(
!
(
defined
(
$GENI_METHODS
)
&&
defined
(
$EMULAB_PEMFILE
)))
{
SENDMAIL
(
$TBOPS
,
"
Error loading module
$MODULE
",
SENDMAIL
(
$TBOPS
,
"
Error loading module
$MODULE
",
"
No definition for GENI_METHODS or EMULAB_PEMFILE
");
"
No definition for GENI_METHODS or EMULAB_PEMFILE
");
XMLError
(
-
1
,
"
Internal error loading module; missing definitions
");
XMLError
(
XMLRPC_APPLICATION_ERROR
(),
"
Internal error loading module; missing definitions
");
}
}
#
#
...
@@ -278,14 +282,15 @@ my $response;
...
@@ -278,14 +282,15 @@ my $response;
$request
=~
s/(<\?XML\s+VERSION)/\L$1\E/
;
$request
=~
s/(<\?XML\s+VERSION)/\L$1\E/
;
eval
{
$call
=
$decoder
->
decode
(
$request
)
};
eval
{
$call
=
$decoder
->
decode
(
$request
)
};
if
(
$@
)
{
if
(
$@
)
{
XMLError
(
1
,
"
error decoding RPC:
\n
"
.
$@
);
XMLError
(
XMLRPC_PARSE_ERROR
()
,
"
error decoding RPC:
\n
"
.
$@
);
}
}
if
(
$call
->
{'
type
'}
ne
'
call
')
{
if
(
$call
->
{'
type
'}
ne
'
call
')
{
XMLError
(
1
,
"
expected RPC methodCall, got
$call
->{'type'}
");
XMLError
(
XMLRPC_APPLICATION_ERROR
(),
"
expected RPC methodCall, got
$call
->{'type'}
");
}
}
my
$method
=
$call
->
{'
method_name
'};
my
$method
=
$call
->
{'
method_name
'};
if
(
!
defined
(
$GENI_METHODS
->
{
$method
}))
{
if
(
!
defined
(
$GENI_METHODS
->
{
$method
}))
{
XMLError
(
3
,
"
no such method
$method
\n
");
XMLError
(
XMLRPC_APPLICATION_ERROR
()
+
3
,
"
no such method
$method
\n
");
}
}
# Strictly for debugging the CM.
# Strictly for debugging the CM.
my
$target
;
my
$target
;
...
@@ -320,7 +325,8 @@ if ($@) {
...
@@ -320,7 +325,8 @@ if ($@) {
#
#
print
STDERR
"
Error executing RPC method
$method
:
\n
"
.
$@
.
"
\n
";
print
STDERR
"
Error executing RPC method
$method
:
\n
"
.
$@
.
"
\n
";
AddAuditInfo
("
to
",
$TBOPS
);
AddAuditInfo
("
to
",
$TBOPS
);
$response
=
$decoder
->
encode_fault
(
4
,
"
Internal Error executing
$method
");
$response
=
$decoder
->
encode_fault
(
XMLRPC_SERVER_ERROR
(),
"
Internal Error executing
$method
");
AddAuditInfo
("
message
",
$message
.
AddAuditInfo
("
message
",
$message
.
"
Error executing RPC:
\n
"
.
$@
.
"
\n\n
"
.
$request
);
"
Error executing RPC:
\n
"
.
$@
.
"
\n\n
"
.
$request
);
...
@@ -395,7 +401,8 @@ END {
...
@@ -395,7 +401,8 @@ END {
my
$decoder
= Frontier::RPC2->new();
my
$decoder
= Frontier::RPC2->new();
print "Content-Type: text/xml
\n\n
";
print "Content-Type: text/xml
\n\n
";
print
$decoder
->encode_fault(-2, "XMLRPC Server Error");
print
$decoder
->encode_fault(XMLRPC_SYSTEM_ERROR(),
"XMLRPC Server Error");
# Since we converted to a normal error and sent the log message.
# Since we converted to a normal error and sent the log message.
$? = 0;
$? = 0;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment