Thanks for your reply.

When upload a document to whiteboard, jump HTTP ERROR:500 after upload finished.

Error can read on console. That is below:

DEBUG 03-30 16:02:45.566 AbstractUploadController.java 14471244 58 
org.apache.openmeetings.servlet.outputhandler.AbstractUploadController 
[http-bio-0.0.0.0-5080-exec-1] - Starting validate
DEBUG 03-30 16:02:45.567 AbstractUploadController.java 14471245 65 
org.apache.openmeetings.servlet.outputhandler.AbstractUploadController 
[http-bio-0.0.0.0-5080-exec-1] - sid: 524b18e8ff56923286c6aefeb6cd646a
DEBUG 03-30 16:02:45.588 AbstractUploadController.java 14471266 69 
org.apache.openmeetings.servlet.outputhandler.AbstractUploadController 
[http-bio-0.0.0.0-5080-exec-1] - userId = 0, userLevel = -1
Mar 30, 2013 4:02:45 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [spring-mvc] in context with path 
[/openmeetings] threw exception [Insufficient permissions -1] with root cause
javax.servlet.ServletException: Insufficient permissions -1
        at 
org.apache.openmeetings.servlet.outputhandler.AbstractUploadController.validate(AbstractUploadController.java:74)
        at 
org.apache.openmeetings.servlet.outputhandler.UploadController.handleFileUpload(UploadController.java:77)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at 
org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)
        at 
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
        at 
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
        at 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
        at 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
        at 
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
        at 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
        at 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
        at 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
        at 
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at 
org.red5.logging.LoggerContextFilter.doFilter(LoggerContextFilter.java:77)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
        at 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
        at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
        at 
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
        at 
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
        at 
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
[ERROR] [http-bio-0.0.0.0-5080-exec-1] 
org.apache.catalina.core.ContainerBase.[red5Engine].[0.0.0.0].[/openmeetings].[spring-mvc]
 - Servlet.service() for servlet [spring-mvc] in context with path 
[/openmeetings] threw exception [Insufficient permissions -1] with root cause
javax.servlet.ServletException: Insufficient permissions -1
        at 
org.apache.openmeetings.servlet.outputhandler.AbstractUploadController.validate(AbstractUploadController.java:74)
 ~[openmeetings-2.1.0-SNAPSHOT.jar:na]
        at 
org.apache.openmeetings.servlet.outputhandler.UploadController.handleFileUpload(UploadController.java:77)
 ~[openmeetings-2.1.0-SNAPSHOT.jar:na]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
~[na:1.6.0_38]
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
~[na:1.6.0_38]
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 ~[na:1.6.0_38]
        at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_38]
        at 
org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)
 ~[spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
        at 
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
 ~[spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
        at 
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
 ~[org.springframework.web.servlet-jar-3.1.1.RELEASE.jar:3.1.1.RELEASE]
        at 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
 ~[org.springframework.web.servlet-jar-3.1.1.RELEASE.jar:3.1.1.RELEASE]
        at 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
 ~[org.springframework.web.servlet-jar-3.1.1.RELEASE.jar:3.1.1.RELEASE]
        at 
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
 ~[org.springframework.web.servlet-jar-3.1.1.RELEASE.jar:3.1.1.RELEASE]
        at 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
 ~[org.springframework.web.servlet-jar-3.1.1.RELEASE.jar:3.1.1.RELEASE]
        at 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
 ~[org.springframework.web.servlet-jar-3.1.1.RELEASE.jar:3.1.1.RELEASE]
        at 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
 ~[org.springframework.web.servlet-jar-3.1.1.RELEASE.jar:3.1.1.RELEASE]
        at 
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
 ~[org.springframework.web.servlet-jar-3.1.1.RELEASE.jar:3.1.1.RELEASE]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
~[tomcat-embed-core-jar-7.0.34.jar:7.0.34]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
~[tomcat-embed-core-jar-7.0.34.jar:7.0.34]
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
 ~[tomcat-embed-core-jar-7.0.34.jar:7.0.34]
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
 ~[tomcat-embed-core-jar-7.0.34.jar:7.0.34]
        at 
org.red5.logging.LoggerContextFilter.doFilter(LoggerContextFilter.java:77) 
~[red5.jar:na]
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
 ~[tomcat-embed-core-jar-7.0.34.jar:7.0.34]
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
 ~[tomcat-embed-core-jar-7.0.34.jar:7.0.34]
        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
 ~[tomcat-embed-core-jar-7.0.34.jar:7.0.34]
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
 [tomcat-embed-core-jar-7.0.34.jar:7.0.34]
        at 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
 [tomcat-embed-core-jar-7.0.34.jar:7.0.34]
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
[tomcat-embed-core-jar-7.0.34.jar:7.0.34]
        at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
[tomcat-embed-core-jar-7.0.34.jar:7.0.34]
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
 [tomcat-embed-core-jar-7.0.34.jar:7.0.34]
        at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
[tomcat-embed-core-jar-7.0.34.jar:7.0.34]
        at 
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
 [tomcat-embed-core-jar-7.0.34.jar:7.0.34]
        at 
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
 [tomcat-embed-core-jar-7.0.34.jar:7.0.34]
        at 
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
 [tomcat-embed-core-jar-7.0.34.jar:7.0.34]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
 [na:1.6.0_38]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
[na:1.6.0_38]
        at java.lang.Thread.run(Thread.java:662) [na:1.6.0_38]

-----Original Message-----
From: [email protected] [mailto:[email protected]] 
Sent: 2013年3月30日 11:37
To: dev
Subject: Re: login using SOAP API whiteboard don't work.

When you integrate your application into some other host, of course you can't 
run OpenMeetings via "localhost".
I mean the SOAP interface might be reachable from the SOAP WebService via 
"localhost", but for any other user this URL will just point to his own 
host/computer/device.
So use the correct URL to load the SWF into the client, the one that you would 
use to externally access OpenMeetings.

Sebastian


2013/3/30 Alexei Fedotov <[email protected]>

> The last problem indicates you have 5080 port closed. You can simply 
> change the configuration to avoid that.
> 30.03.2013 6:33 пользователь "Ron Sun" <[email protected]> написал:
>
> > Thanks very much first.
> >
> > The document upload works if I login to a room without SOAP.  I mean 
> > document like pdf or jpg works,  but ppt seems have some problem. It 
> > does not matter, right?
> >
> > If there are already exist any files in the room on whiteboard, SOAP 
> > clients join room and get an error:
> >
> > onerror SWF!! canvas.mediaerrortimeout exceeded for
> >
> >
> http://localhost:5080/openmeetings/DownloadHandler?fileName=14f8b355ce
> b630a0bc3f26f4d9d54a2b%2Eswf&moduleName=videoconf1&parentPath=%2F14f8b
> 355ceb630a0bc3f26f4d9d54a2b%2F&room_id=files&sid=20255704177e883fc3b07
> 27b0357ef39
> >
> > where is the problem?
> >
> >
> >
> >
> > -----Original Message-----
> > From: [email protected] [mailto:[email protected]]
> > Sent: 2013年3月30日 5:44
> > To: dev
> > Subject: Re: login using SOAP API whiteboard don't work.
> >
> > It is likely that the error has nothing todo with the SOAP login.
> > Does the document upload work if you login to a room without SOAP ?
> >
> > Sebastian
> >
> >
> > 2013/3/29 ron sun <[email protected]>
> >
> > > I'm not sure whether I said my problem clearly. So I try to make 
> > > it clear in this reply.
> > >
> > > I am using openmeetings_2_0. I have written a Java client to use 
> > > SOAP
> > api.
> > > My intent is to automatically log the user in a specific room. My 
> > > Java code performs follwoing steps:
> > > 1. getSession
> > > 2. loginUser
> > > 3. SetUserObjectAndGenerateRoomHash 
> > > 4.http://localhost:5080/openmeetings/
> > >
> > > main.as3.swf11.swf?secureHash=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&lang
> > > uage
> > > =11&lz
> > > proxied=solo&lc_SID=139032
> > >
> > > Step 3 return the secureHash which is used in step 4. The user can 
> > > login the room, and both voice and video work fine, but the 
> > > whiteboard cannot work.
> > > HTTP-ERROR:500 when load a pdf to whiteboard. Audience cannot see 
> > > share doc on whiteboard which create in
> > http://localhost:5080/openmeetingsentrance .
> > >
> > > I see some bloges about this, but none works.
> > >
> > > I hope people see this letter help me.
> > >
> > > Thanks in advance.
> > >
> > >
> > > And all codes are in my first letter.
> > > com.ron.openmeetings.util. meetingManager return the secureHash URL.
> > > Calling Com.ron.openmeetings.servlet.Room can automatically log 
> > > the user in a specific room.
> > >
> > >
> > > -----Original Message-----
> > > From: ron sun [mailto:[email protected]]
> > > Sent: 2013年3月28日 17:22
> > > To: [email protected]
> > > Subject: login using SOAP API whiteboard don't work.
> > >
> > > Hi all,
> > > I'm using openmeetnis 2.0.
> > > I want my client directly enter the conference room by using SOAP API.
> > >
> > >
> > >
> > > /**********************************utility************************
> > > ****
> > > ******
> > > /
> > > package com.ron.openmeetings.util;
> > >
> > > import javax.servlet.http.HttpServletRequest;
> > > import javax.servlet.http.HttpServletResponse;
> > >
> > > import org.apache.openmeetings.axis.services.UserServiceStub;
> > > import
> > > org.apache.openmeetings.axis.services.UserServiceStub.GetSession;
> > > import
> > > org.apache.openmeetings.axis.services.UserServiceStub.GetSessionRe
> > > spon
> > > se; import
> > > org.apache.openmeetings.axis.services.UserServiceStub.LoginUser;
> > > import
> > > org.apache.openmeetings.axis.services.UserServiceStub.LoginUserRes
> > > pons
> > > e;
> > > import
> > >
> > > org.apache.openmeetings.axis.services.UserServiceStub.SetUserObjec
> > > tAnd
> > > Genera
> > > teRoomHash;
> > > import
> > >
> > > org.apache.openmeetings.axis.services.UserServiceStub.SetUserObjec
> > > tAnd
> > > Genera
> > > teRoomHashResponse;
> > >
> > > public class meetingManager{
> > >
> > >         public static String generateSecureLoginUrl(String 
> > > userName, int roomId){
> > >                         try {
> > >                                 //generate sessionId
> > >                                 UserServiceStub userServiceStub = 
> > > new UserServiceStub("
> > > http://192.168.202.14:5080/openmeetings/services/UserServic
> > > e");
> > >                                 GetSession getSession = new
> GetSession();
> > >                                 GetSessionResponse session = 
> > > userServiceStub.getSession(getSession);
> > >                                 String sessionId = 
> > > session.get_return().getSession_id();
> > > //                              log.debug("Meeting SessionId:" +
> > > sessionId);
> > >
> > >                                 LoginUser loginUser = new LoginUser();
> > >                                 loginUser.setSID(sessionId);
> > >                                 loginUser.setUsername("admin");
> > >                                 loginUser.setUserpass("pass");
> > >                                 LoginUserResponse 
> > > loginUserResponse = userServiceStub.loginUser(loginUser);
> > >                                 long loginResult = 
> > > loginUserResponse.get_return();
> > > //                              log.debug("Meeting LoginResult:"  +
> > > loginResult);
> > >                                 if(loginResult < 0){
> > >                                         return null;
> > >                                 }
> > >                                 //secure room hash
> > >                                 SetUserObjectAndGenerateRoomHash 
> > > userObjectAndGenerateRoomHash = new 
> > > SetUserObjectAndGenerateRoomHash();
> > >
> > > userObjectAndGenerateRoomHash.setSID(sessionId);
> > >
> > > userObjectAndGenerateRoomHash.setUsername(userName);
> > >
> > > userObjectAndGenerateRoomHash.setFirstname(userName);
> > >
> > > userObjectAndGenerateRoomHash.setLastname("");
> > >
> > > userObjectAndGenerateRoomHash.setProfilePictureUrl("");
> > >
> > > userObjectAndGenerateRoomHash.setEmail("");
> > >
> > > userObjectAndGenerateRoomHash.setExternalUserId("");
> > >
> > > userObjectAndGenerateRoomHash.setExternalUserType("");
> > >
> > > userObjectAndGenerateRoomHash.setRoom_id(roomId);
> > >
> > > userObjectAndGenerateRoomHash.setBecomeModeratorAsInt(0);
> > >
> > > userObjectAndGenerateRoomHash.setShowAudioVideoTestAsInt(1);
> > >
> > > SetUserObjectAndGenerateRoomHashResponse
> > > userObjectAndGenerateRoomHashResponse =
> > >
> > > userServiceStub.setUserObjectAndGenerateRoomHash(userObjectAndGene
> > > rate
> > > RoomHa
> > > sh);
> > >                                 String roomHash = 
> > > userObjectAndGenerateRoomHashResponse.get_return();
> > > //                              log.debug("Meeting secure roomHash:" +
> > > roomHash);
> > >                                 String ssoUrl = "
> http://192.168.202.14:5080/openmeetings/main.as3.swf11.swf?secureHash=";
> > >  +
> > > roomHash +  "&language=11&lzproxied=solo&lc_SID=139032";
> > > //                              log.debug("Final secure login url:" +
> > > ssoUrl);
> > >                                 return ssoUrl;
> > >                         }catch(Exception e) {
> > > //                              log.error(e.getMessage(),e);
> > > //                              throw new TSharkException(e);
> > >                         }
> > >                         return null;
> > >         }
> > >
> > > }
> > >
> > >
> > > /************************servlet*********************************/
> > > package com.ron.openmeetings.servlet;
> > >
> > > import java.io.IOException;
> > > import javax.servlet.ServletConfig; import 
> > > javax.servlet.ServletException; import 
> > > javax.servlet.http.HttpServlet; import 
> > > javax.servlet.http.HttpServletRequest;
> > > import javax.servlet.http.HttpServletResponse;
> > >
> > > import com.ron.openmeetings.util.meetingManager;
> > >
> > > /**
> > >  * Servlet implementation class Room  */ public class Room extends 
> > > HttpServlet {
> > >         private static final long serialVersionUID = 1L;
> > >
> > >     /**
> > >      * @see HttpServlet#HttpServlet()
> > >      */
> > >     public Room() {
> > >         super();
> > >         // TODO Auto-generated constructor stub
> > >     }
> > >
> > >         /**
> > >          * @see Servlet#init(ServletConfig)
> > >          */
> > >         public void init(ServletConfig config) throws 
> > > ServletException
> {
> > >                 // TODO Auto-generated method stub
> > >         }
> > >
> > >         /**
> > >          * @see Servlet#destroy()
> > >          */
> > >         public void destroy() {
> > >                 // TODO Auto-generated method stub
> > >                 super.destroy();
> > >         }
> > >
> > >         /**
> > >          * @see HttpServlet#doGet(HttpServletRequest request, 
> > > HttpServletResponse response)
> > >          */
> > >         protected void doGet(HttpServletRequest request, 
> > > HttpServletResponse
> > > response) throws ServletException, IOException {
> > >                 // TODO Auto-generated method stub
> > >                 doPost(request,response);
> > >         }
> > >
> > >         /**
> > >          * @see HttpServlet#doPost(HttpServletRequest request, 
> > > HttpServletResponse response)
> > >          */
> > >         protected void doPost(HttpServletRequest request, 
> > > HttpServletResponse response) throws ServletException, IOException {
> > >                 // TODO Auto-generated method stub
> > >                 try{
> > >                         room(request, response);
> > >                 }catch(Exception e){
> > >
> > >                 }
> > >
> > >         }
> > >
> > >
> > > //      @RequestMapping(value = "/room/admin")
> > >         public void room(HttpServletRequest request, 
> > > HttpServletResponse
> > > response) throws Exception {
> > > //              String roomId = request.getParameter("roomId");
> > >
> > > //              String roomSecureLoginUrl =
> > > meetingManager.generateSecureLoginUrl("renjiao",
> > Integer.valueOf(roomId));
> > >                 String roomSecureLoginUrl = 
> > > meetingManager.generateSecureLoginUrl("renjiao", 6);
> > >                 response.sendRedirect(roomSecureLoginUrl);
> > >         }
> > >
> > > }
> > >
> > >
> > > Everything goes correctly except whiteboad don't work.
> > >
> > > I search on the internet and find it's a bug.
> > > On  WebContent/src/modules/conference/commonVideoComponentAdapter.lzx,
> > > On line 37, it reads   "//FIXME: Throws a Null Pointer Exception if the
> > > parent view was already destroyed
> > >
> > > Someone suggests modify method reconnectSuccess, like this:
> > > <method name="reconnectSuccess" args="isInterview">
> > >     if ($debug) Debug.write("Send reconnectSuccess to 
> > > ",canvas.rtmp_lc_name);
> > >     canvas.sendViaLocalConnection(canvas.rtmp_lc_name,
> > > "reconnectSuccess", [canvas.thishib.src, canvas.publicSID,
> > hib.userobject, isInterview]);
> > >     //add secure remote login
> > >     if(canvas.secureRemoteUserLogin){
> > >         if ($debug) Debug.write("as3ConnectionSuccess invoke: ","");
> > >         this.parent.as3ConnectionSuccess();//using SOAP API login, 
> > > miss this.
> > >     }
> > > </method>
> > >
> > > It doesn't work and cause other error. How to fix it?
> > >
> > >
> > > Thanks a lot!
> > >
> > > Ron Sun.
> > >
> > >
> > >
> >
> >
> > --
> > Sebastian Wagner
> > https://twitter.com/#!/dead_lock
> > http://www.webbase-design.de
> > http://www.wagner-sebastian.com
> > [email protected]
> >
> >
>



--
Sebastian Wagner
https://twitter.com/#!/dead_lock
http://www.webbase-design.de
http://www.wagner-sebastian.com
[email protected]

Reply via email to