Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Linnea Samila
/
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;
...
@@ -3,6 +3,9 @@ package fi.insomnia.bortal.clientutils;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Map
;
import
javax.security.auth.login.LoginContext
;
import
javax.security.auth.login.LoginException
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
...
@@ -15,6 +18,8 @@ public class BortalLocalContextHolder {
...
@@ -15,6 +18,8 @@ public class BortalLocalContextHolder {
private
String
hostname
;
private
String
hostname
;
private
boolean
ssl
=
false
;
private
boolean
ssl
=
false
;
private
Integer
hostnameId
;
private
Integer
hostnameId
;
private
LoginContext
loginContext
;
private
final
Map
<
IAppPermission
,
Boolean
>
rightcache
=
new
HashMap
<
IAppPermission
,
Boolean
>();
private
final
Map
<
IAppPermission
,
Boolean
>
rightcache
=
new
HashMap
<
IAppPermission
,
Boolean
>();
...
@@ -30,6 +35,7 @@ public class BortalLocalContextHolder {
...
@@ -30,6 +35,7 @@ public class BortalLocalContextHolder {
super
();
super
();
this
.
hostname
=
old
.
hostname
;
this
.
hostname
=
old
.
hostname
;
this
.
ssl
=
old
.
ssl
;
this
.
ssl
=
old
.
ssl
;
this
.
loginContext
=
old
.
loginContext
;
}
}
public
static
void
setHostname
(
String
hostname
)
{
public
static
void
setHostname
(
String
hostname
)
{
...
@@ -111,4 +117,31 @@ public class BortalLocalContextHolder {
...
@@ -111,4 +117,31 @@ public class BortalLocalContextHolder {
}
}
THREAD_WITH_CONTEXT
.
set
(
new
BortalLocalContextHolder
(
contextHolder
));
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;
...
@@ -6,6 +6,10 @@ import java.io.InputStreamReader;
import
java.io.OutputStream
;
import
java.io.OutputStream
;
import
java.io.OutputStreamWriter
;
import
java.io.OutputStreamWriter
;
import
java.nio.charset.Charset
;
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.Command
;
import
org.apache.sshd.server.Environment
;
import
org.apache.sshd.server.Environment
;
...
@@ -14,20 +18,29 @@ import org.slf4j.Logger;
...
@@ -14,20 +18,29 @@ import org.slf4j.Logger;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
fi.insomnia.bortal.clientutils.BortalLocalContextHolder
;
import
fi.insomnia.bortal.clientutils.BortalLocalContextHolder
;
import
fi.insomnia.bortal.cmdline.Hello
;
import
fi.insomnia.bortal.cmdline.ICommandlineCommand
;
public
class
BortalCommand
implements
Command
,
Runnable
{
public
class
BortalCommand
implements
Command
,
Runnable
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
BortalCommand
.
class
);
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
BortalCommand
.
class
);
private
OutputStream
errstream
;
private
OutputStream
Writer
errstream
;
private
ExitCallback
exitCallback
;
private
ExitCallback
exitCallback
;
private
InputStreamReader
instream
;
private
InputStreamReader
instream
;
private
OutputStreamWriter
outstream
;
private
OutputStreamWriter
outstream
;
private
BortalLocalContextHolder
contextHolder
;
private
BortalLocalContextHolder
contextHolder
;
private
Charset
UTF8
=
Charset
.
forName
(
"UTF-8"
);
private
Charset
UTF8
=
Charset
.
forName
(
"UTF-8"
);
private
HashMap
<
String
,
ICommandlineCommand
>
commandMap
=
new
HashMap
<
String
,
ICommandlineCommand
>();
public
BortalCommand
(
BortalLocalContextHolder
context
)
{
public
BortalCommand
(
BortalLocalContextHolder
context
)
{
contextHolder
=
context
;
contextHolder
=
context
;
}
}
public
BortalCommand
addCommandlineCommand
(
String
name
,
ICommandlineCommand
c
)
{
this
.
commandMap
.
put
(
name
,
c
);
return
this
;
}
@Override
@Override
public
void
setInputStream
(
InputStream
in
)
{
public
void
setInputStream
(
InputStream
in
)
{
...
@@ -42,7 +55,7 @@ public class BortalCommand implements Command, Runnable {
...
@@ -42,7 +55,7 @@ public class BortalCommand implements Command, Runnable {
@Override
@Override
public
void
setErrorStream
(
OutputStream
err
)
{
public
void
setErrorStream
(
OutputStream
err
)
{
errstream
=
err
;
errstream
=
new
OutputStreamWriter
(
err
,
UTF8
)
;
}
}
@Override
@Override
...
@@ -59,16 +72,20 @@ public class BortalCommand implements Command, Runnable {
...
@@ -59,16 +72,20 @@ public class BortalCommand implements Command, Runnable {
@Override
@Override
public
void
destroy
()
{
public
void
destroy
()
{
logger
.
info
(
"destroying ssh command"
);
logger
.
info
(
"destroying ssh command"
);
}
}
@Override
@Override
public
void
run
()
{
public
void
run
()
{
BortalLocalContextHolder
.
copy
(
contextHolder
);
BortalLocalContextHolder
.
copy
(
contextHolder
);
BortalLocalContextHolder
.
getInstance
().
executeLogin
();
try
{
try
{
logger
.
info
(
"Created new bortalCommane"
);
logger
.
info
(
"Created new bortalCommane"
);
outstream
.
write
(
"Hello you..."
);
outstream
.
write
(
"Hello you..."
);
StringBuilder
cmdBuilder
=
new
StringBuilder
();
StringBuilder
cmdBuilder
=
new
StringBuilder
();
// prime 0 return value
int
returnValue
=
0
;
while
(
true
)
{
while
(
true
)
{
if
(!
instream
.
ready
())
{
if
(!
instream
.
ready
())
{
...
@@ -78,9 +95,12 @@ public class BortalCommand implements Command, Runnable {
...
@@ -78,9 +95,12 @@ public class BortalCommand implements Command, Runnable {
if
(
inchar
==
'\n'
||
inchar
==
'\r'
)
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
();
outstream
.
flush
();
parseCommand
(
cmdBuilder
.
toString
());
cmdBuilder
=
new
StringBuilder
();
cmdBuilder
=
new
StringBuilder
();
...
@@ -99,14 +119,33 @@ public class BortalCommand implements Command, Runnable {
...
@@ -99,14 +119,33 @@ public class BortalCommand implements Command, Runnable {
// TODO Auto-generated catch block
// TODO Auto-generated catch block
e
.
printStackTrace
();
e
.
printStackTrace
();
}
}
BortalLocalContextHolder
.
getInstance
().
executeLogout
();
exitCallback
.
onExit
(
3
);
exitCallback
.
onExit
(
3
);
}
}
private
void
parseCommand
(
String
string
)
{
private
int
parseCommand
(
String
args
)
{
if
(
string
!=
null
&&
!
string
.
isEmpty
())
String
[]
argv
=
null
;
{
if
(
args
!=
null
)
{
logger
.
info
(
"received command {}"
,
string
);
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 {
...
@@ -64,6 +64,8 @@ public class BortalPasswordAuthenticator implements PasswordAuthenticator {
}
}
});
});
loginContext
.
login
();
loginContext
.
login
();
context
.
setLoginContext
(
loginContext
);
// loginContext.logout();
// loginContext.logout();
return
true
;
return
true
;
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
...
...
code/LanBortalWeb/src/fi/insomnia/bortal/servlet/SshServlet.java
View file @
031df25
...
@@ -6,6 +6,7 @@ import java.util.Map;
...
@@ -6,6 +6,7 @@ import java.util.Map;
import
java.util.Map.Entry
;
import
java.util.Map.Entry
;
import
javax.ejb.EJB
;
import
javax.ejb.EJB
;
import
javax.security.auth.login.LoginException
;
import
javax.servlet.Servlet
;
import
javax.servlet.Servlet
;
import
javax.servlet.ServletConfig
;
import
javax.servlet.ServletConfig
;
import
javax.servlet.ServletException
;
import
javax.servlet.ServletException
;
...
@@ -22,7 +23,9 @@ import org.slf4j.Logger;
...
@@ -22,7 +23,9 @@ import org.slf4j.Logger;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
fi.insomnia.bortal.beans.EventBeanLocal
;
import
fi.insomnia.bortal.beans.EventBeanLocal
;
import
fi.insomnia.bortal.beans.PermissionBeanLocal
;
import
fi.insomnia.bortal.clientutils.BortalLocalContextHolder
;
import
fi.insomnia.bortal.clientutils.BortalLocalContextHolder
;
import
fi.insomnia.bortal.cmdline.Hello
;
import
fi.insomnia.bortal.model.LanEvent
;
import
fi.insomnia.bortal.model.LanEvent
;
/**
/**
...
@@ -38,6 +41,8 @@ public class SshServlet extends HttpServlet {
...
@@ -38,6 +41,8 @@ public class SshServlet extends HttpServlet {
@EJB
@EJB
private
EventBeanLocal
eventbean
;
private
EventBeanLocal
eventbean
;
@EJB
private
PermissionBeanLocal
permBean
;
/**
/**
* @see HttpServlet#HttpServlet()
* @see HttpServlet#HttpServlet()
...
@@ -58,8 +63,12 @@ public class SshServlet extends HttpServlet {
...
@@ -58,8 +63,12 @@ public class SshServlet extends HttpServlet {
@Override
@Override
public
Command
create
()
{
public
Command
create
()
{
logger
.
info
(
"creating new bortal command"
);
logger
.
info
(
"creating new bortal command"
);
BortalCommand
bc
=
new
BortalCommand
(
context
);
return
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