Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Antti Väyrynen
/
Moya
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 031df250
authored
Oct 06, 2012
by
Antti Tönkyrä
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add logincontext to localcontextholder
1 parent
81b321b0
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
96 additions
and
12 deletions
code/LanBortalBeansClient/ejbModule/fi/insomnia/bortal/clientutils/BortalLocalContextHolder.java
code/LanBortalWeb/src/fi/insomnia/bortal/servlet/BortalCommand.java
code/LanBortalWeb/src/fi/insomnia/bortal/servlet/BortalPasswordAuthenticator.java
code/LanBortalWeb/src/fi/insomnia/bortal/servlet/SshServlet.java
code/LanBortalBeansClient/ejbModule/fi/insomnia/bortal/clientutils/BortalLocalContextHolder.java
View file @
031df25
...
...
@@ -3,6 +3,9 @@ package fi.insomnia.bortal.clientutils;
import
java.util.HashMap
;
import
java.util.Map
;
import
javax.security.auth.login.LoginContext
;
import
javax.security.auth.login.LoginException
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -15,6 +18,8 @@ public class BortalLocalContextHolder {
private
String
hostname
;
private
boolean
ssl
=
false
;
private
Integer
hostnameId
;
private
LoginContext
loginContext
;
private
final
Map
<
IAppPermission
,
Boolean
>
rightcache
=
new
HashMap
<
IAppPermission
,
Boolean
>();
...
...
@@ -30,6 +35,7 @@ public class BortalLocalContextHolder {
super
();
this
.
hostname
=
old
.
hostname
;
this
.
ssl
=
old
.
ssl
;
this
.
loginContext
=
old
.
loginContext
;
}
public
static
void
setHostname
(
String
hostname
)
{
...
...
@@ -111,4 +117,31 @@ public class BortalLocalContextHolder {
}
THREAD_WITH_CONTEXT
.
set
(
new
BortalLocalContextHolder
(
contextHolder
));
}
public
void
setLoginContext
(
LoginContext
loginContext
)
{
this
.
loginContext
=
loginContext
;
}
public
LoginContext
getLoginContext
()
{
return
loginContext
;
}
public
boolean
executeLogin
()
{
try
{
this
.
loginContext
.
login
();
System
.
err
.
println
(
"execute login"
);
return
true
;
}
catch
(
LoginException
e
)
{
return
false
;
}
}
public
void
executeLogout
()
{
try
{
this
.
loginContext
.
logout
();
System
.
err
.
println
(
"execute logout"
);
}
catch
(
Exception
e
)
{
}
}
}
\ No newline at end of file
code/LanBortalWeb/src/fi/insomnia/bortal/servlet/BortalCommand.java
View file @
031df25
...
...
@@ -6,6 +6,10 @@ import java.io.InputStreamReader;
import
java.io.OutputStream
;
import
java.io.OutputStreamWriter
;
import
java.nio.charset.Charset
;
import
java.util.HashMap
;
import
javax.annotation.PostConstruct
;
import
javax.security.auth.login.LoginException
;
import
org.apache.sshd.server.Command
;
import
org.apache.sshd.server.Environment
;
...
...
@@ -14,20 +18,29 @@ import org.slf4j.Logger;
import
org.slf4j.LoggerFactory
;
import
fi.insomnia.bortal.clientutils.BortalLocalContextHolder
;
import
fi.insomnia.bortal.cmdline.Hello
;
import
fi.insomnia.bortal.cmdline.ICommandlineCommand
;
public
class
BortalCommand
implements
Command
,
Runnable
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
BortalCommand
.
class
);
private
OutputStream
errstream
;
private
OutputStream
Writer
errstream
;
private
ExitCallback
exitCallback
;
private
InputStreamReader
instream
;
private
OutputStreamWriter
outstream
;
private
BortalLocalContextHolder
contextHolder
;
private
Charset
UTF8
=
Charset
.
forName
(
"UTF-8"
);
private
HashMap
<
String
,
ICommandlineCommand
>
commandMap
=
new
HashMap
<
String
,
ICommandlineCommand
>();
public
BortalCommand
(
BortalLocalContextHolder
context
)
{
contextHolder
=
context
;
}
public
BortalCommand
addCommandlineCommand
(
String
name
,
ICommandlineCommand
c
)
{
this
.
commandMap
.
put
(
name
,
c
);
return
this
;
}
@Override
public
void
setInputStream
(
InputStream
in
)
{
...
...
@@ -42,7 +55,7 @@ public class BortalCommand implements Command, Runnable {
@Override
public
void
setErrorStream
(
OutputStream
err
)
{
errstream
=
err
;
errstream
=
new
OutputStreamWriter
(
err
,
UTF8
)
;
}
@Override
...
...
@@ -59,16 +72,20 @@ public class BortalCommand implements Command, Runnable {
@Override
public
void
destroy
()
{
logger
.
info
(
"destroying ssh command"
);
}
@Override
public
void
run
()
{
BortalLocalContextHolder
.
copy
(
contextHolder
);
BortalLocalContextHolder
.
getInstance
().
executeLogin
();
try
{
logger
.
info
(
"Created new bortalCommane"
);
outstream
.
write
(
"Hello you..."
);
StringBuilder
cmdBuilder
=
new
StringBuilder
();
// prime 0 return value
int
returnValue
=
0
;
while
(
true
)
{
if
(!
instream
.
ready
())
{
...
...
@@ -78,9 +95,12 @@ public class BortalCommand implements Command, Runnable {
if
(
inchar
==
'\n'
||
inchar
==
'\r'
)
{
outstream
.
write
(
"\r\n# "
);
outstream
.
write
(
"\r\n"
);
outstream
.
flush
();
returnValue
=
parseCommand
(
cmdBuilder
.
toString
());
outstream
.
write
(
"["
+
returnValue
+
"] "
+
BortalLocalContextHolder
.
getInstance
().
loginContext
.
getSubject
().
getPrincipals
().
iterator
().
next
().
getName
()
+
" # "
);
outstream
.
flush
();
parseCommand
(
cmdBuilder
.
toString
());
cmdBuilder
=
new
StringBuilder
();
...
...
@@ -99,14 +119,33 @@ public class BortalCommand implements Command, Runnable {
// TODO Auto-generated catch block
e
.
printStackTrace
();
}
BortalLocalContextHolder
.
getInstance
().
executeLogout
();
exitCallback
.
onExit
(
3
);
}
private
void
parseCommand
(
String
string
)
{
if
(
string
!=
null
&&
!
string
.
isEmpty
())
{
logger
.
info
(
"received command {}"
,
string
);
private
int
parseCommand
(
String
args
)
{
String
[]
argv
=
null
;
if
(
args
!=
null
)
{
if
(
args
.
length
()
==
0
)
return
0
;
argv
=
args
.
split
(
" "
);
}
if
(
argv
!=
null
&&
argv
.
length
>
0
)
{
logger
.
info
(
"received command {}"
,
argv
[
0
]);
ICommandlineCommand
cmd
;
if
((
cmd
=
this
.
commandMap
.
get
(
argv
[
0
]))
!=
null
)
{
return
cmd
.
execute
(
argv
,
this
.
instream
,
this
.
outstream
,
this
.
errstream
);
}
else
{
try
{
this
.
errstream
.
write
(
"unknown command\r\n"
);
this
.
errstream
.
flush
();
}
catch
(
IOException
ioe
)
{}
return
-
1
;
}
}
else
{
return
0
;
}
}
}
code/LanBortalWeb/src/fi/insomnia/bortal/servlet/BortalPasswordAuthenticator.java
View file @
031df25
...
...
@@ -64,6 +64,8 @@ public class BortalPasswordAuthenticator implements PasswordAuthenticator {
}
});
loginContext
.
login
();
context
.
setLoginContext
(
loginContext
);
// loginContext.logout();
return
true
;
}
catch
(
Exception
e
)
{
...
...
code/LanBortalWeb/src/fi/insomnia/bortal/servlet/SshServlet.java
View file @
031df25
...
...
@@ -6,6 +6,7 @@ import java.util.Map;
import
java.util.Map.Entry
;
import
javax.ejb.EJB
;
import
javax.security.auth.login.LoginException
;
import
javax.servlet.Servlet
;
import
javax.servlet.ServletConfig
;
import
javax.servlet.ServletException
;
...
...
@@ -22,7 +23,9 @@ import org.slf4j.Logger;
import
org.slf4j.LoggerFactory
;
import
fi.insomnia.bortal.beans.EventBeanLocal
;
import
fi.insomnia.bortal.beans.PermissionBeanLocal
;
import
fi.insomnia.bortal.clientutils.BortalLocalContextHolder
;
import
fi.insomnia.bortal.cmdline.Hello
;
import
fi.insomnia.bortal.model.LanEvent
;
/**
...
...
@@ -38,6 +41,8 @@ public class SshServlet extends HttpServlet {
@EJB
private
EventBeanLocal
eventbean
;
@EJB
private
PermissionBeanLocal
permBean
;
/**
* @see HttpServlet#HttpServlet()
...
...
@@ -58,8 +63,12 @@ public class SshServlet extends HttpServlet {
@Override
public
Command
create
()
{
logger
.
info
(
"creating new bortal command"
);
return
new
BortalCommand
(
context
);
BortalCommand
bc
=
new
BortalCommand
(
context
);
bc
.
addCommandlineCommand
(
"hello"
,
new
Hello
(
permBean
))
.
addCommandlineCommand
(
"hallo"
,
new
Hello
(
permBean
));
return
bc
;
}
}
...
...
Write
Preview
Markdown
is supported
Attach a file
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 post a comment