Changeset 120 for VSNServer


Ignore:
Timestamp:
Oct 6, 2012 2:59:23 PM (6 years ago)
Author:
psaiteja
Message:

Updated the server proxy source code to log everything in a log file, instead of printing it out in the console for later use. The log file will be appended with text everytime the server proxy code starts. This is done for easier usage statistics collection.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • VSNServer/src/ServerProxy.java

    r118 r120  
    2121        private int ptTimeout = ServerProxyThread.DEFAULT_TIMEOUT/1000; 
    2222        private int debugLevel = 0; 
     23        private FileOutputStream out; 
    2324        private PrintStream debugOut = System.out; 
    2425        private String database_driver = "org.apache.derby.jdbc.EmbeddedDriver"; 
     
    5758                System.err.println("  **  Starting Server on port " + port + ". Press CTRL-C to end.  **\n"); 
    5859                ServerProxy sp = new ServerProxy(port,udp_port, 5, alpha_main, maxusers_main); 
    59                 sp.setDebug(1, System.out);              
     60                //sp.setDebug(1, System.out);            
    6061                sp.start(); 
    6162                 
     
    8687                thisPort = port; 
    8788                UDPport = udp_port; 
     89                try{ 
     90                        out = new FileOutputStream("serverlog.txt", true); 
     91                        debugOut = new PrintStream(out); 
     92                }catch(Exception e){ 
     93                        debugOut = System.out; 
     94                        System.out.println("Could not initialize server log file"); 
     95                } 
     96                 
    8897                setMThreshold(); 
    8998        } 
     
    96105                alpha = alphamain; 
    97106                max_users = maxusersmain; 
     107                try{ 
     108                        out = new FileOutputStream("serverlog.txt", true); 
     109                        debugOut = new PrintStream(out); 
     110                }catch(Exception e){ 
     111                        debugOut = System.out; 
     112                        System.out.println("Could not initialize server log file"); 
     113                } 
    98114                setMThreshold(); 
    99115                System.out.println("M_Threshold:"+m_threshold); 
     
    144160                        server.close(); 
    145161                }  catch(Exception e)  {  
    146                         if (debugLevel > 0) 
    147                                 debugOut.println(e); 
     162                          debugOut.println(e); 
    148163                } 
    149164                 
     
    158173                                Class.forName(database_driver); 
    159174                        } catch (java.lang.ClassNotFoundException e) { 
    160                                 e.printStackTrace();     
     175                                e.printStackTrace(debugOut); 
    161176                                return; 
    162177                        } 
     
    187202                                        createtable = createtable + ")"; 
    188203                                         
    189                                         System.out.println(createtable); 
     204                                        debugOut.println(createtable); 
    190205                                         
    191206                                        stmt.executeUpdate(createtable); 
     
    249264                         
    250265                        try{ 
    251                                 udpthread = new UDPServerThread(UDPport,conn,m_threshold); 
     266                                udpthread = new UDPServerThread(UDPport,conn,m_threshold, debugOut); 
    252267                                udpthread.start(); 
    253268                        } 
     
    256271                        } 
    257272                        catch(Exception e){ 
    258                                 e.printStackTrace(); 
     273                                e.printStackTrace(debugOut); 
    259274                                return; 
    260275                        } 
     
    271286                                        ResultSet rs = stmt2.executeQuery("select * from ClientDatabase where IP='"+clientip+"'"); 
    272287                                        if (! rs.next()) { 
    273                                                 //System.out.println("Client entry exists - IP: " + rs.getString(1)+" Port:"+rs.getInt(2)); 
     288                                                //debugOut.println("Client entry exists - IP: " + rs.getString(1)+" Port:"+rs.getInt(2)); 
    274289                                        //} else { 
    275290                                                PreparedStatement psInsert = conn.prepareStatement("insert into ClientDatabase values (?,?,?)"); 
     
    281296 
    282297                                                psInsert.executeUpdate(); 
    283                                                 System.out.println("Added client database entry with ip:"+clientip+" port:"+(DEFAULT_UDP_PORT-1)); 
     298                                                debugOut.println("Added client database entry with ip:"+clientip+" port:"+(DEFAULT_UDP_PORT-1)); 
    284299                                                 
    285300                                                udpthread.sendoldhashes(clientip, DEFAULT_UDP_PORT-1); 
     
    287302                                        rs.close(); 
    288303                                } catch (Exception e) { 
    289                                         System.out.println("clientip="+clientip+"\n"); 
    290                                         e.printStackTrace(); 
     304                                        debugOut.println("clientip="+clientip+"\n"); 
     305                                        e.printStackTrace(debugOut); 
    291306                                } 
    292307                                 
    293                                 ServerProxyThread t = new ServerProxyThread(client, conn, udpthread, m_threshold); 
     308                                ServerProxyThread t = new ServerProxyThread(client, conn, udpthread, m_threshold, debugOut); 
    294309                                t.setDebug(debugLevel, debugOut); 
    295310                                t.setTimeout(ptTimeout); 
     
    297312                        } 
    298313                }  catch (Exception e)  { 
    299                         if (debugLevel > 0) 
    300314                                debugOut.println("VSNServer Proxy Thread error: " + e); 
    301315                } 
     
    312326        private DatagramSocket UDPserver = null; 
    313327        private int m_threshold = 0; 
    314          
     328        private PrintStream debugOut; 
    315329        private Connection database_conn; 
    316330         
    317         public UDPServerThread(int port, Connection conn, int m) throws SocketException{ 
     331        public UDPServerThread(int port, Connection conn, int m, PrintStream debug) throws SocketException{ 
    318332                UDPport = port; 
    319333                database_conn = conn; 
    320334                m_threshold = m; 
    321                  
     335                debugOut = debug; 
    322336                UDPserver = new DatagramSocket(UDPport); 
    323337        } 
     
    333347                        UDPserver.close(); 
    334348                }  catch(Exception e)  {  
    335                         e.printStackTrace(); 
     349                        e.printStackTrace(debugOut); 
    336350                }        
    337351                UDPserver = null; 
     
    348362                                String IPAddress = receivePacket.getAddress().getHostAddress();  
    349363                                int port = receivePacket.getPort();  
    350                                 System.out.println("Received UDP 'Hello' request from IP:"+IPAddress+" Port:"+port); 
     364                                debugOut.println("Received UDP 'Hello' request from IP:"+IPAddress+" Port:"+port); 
    351365                                try {            
    352366                                        Statement stmt = database_conn.createStatement(); 
     
    361375 
    362376                                                psInsert.executeUpdate(); 
    363                                                 System.out.println("Inserted into ClientDatabase IP:"+IPAddress+" Port:"+port); 
     377                                                debugOut.println("Inserted into ClientDatabase IP:"+IPAddress+" Port:"+port); 
    364378                                                sendoldhashes(IPAddress, port); 
    365379                                        } 
     
    372386                                                psUpdate.executeUpdate(); 
    373387                                                 
    374                                                 System.out.println("Updated clientdatabase with IP:"+IPAddress+" Port:"+port); 
     388                                                debugOut.println("Updated clientdatabase with IP:"+IPAddress+" Port:"+port); 
    375389                                        } 
    376390                                        rs.close(); 
    377391                                         
    378392                                } catch (SQLException e) { 
    379                                         System.out.println("Unable to add client details for the UDP packet with IP:"+IPAddress+" port:"+port); 
    380                                         e.printStackTrace(); 
     393                                        debugOut.println("Unable to add client details for the UDP packet with IP:"+IPAddress+" port:"+port); 
     394                                        e.printStackTrace(debugOut); 
    381395                                } 
    382396                        } 
    383397                        catch(IOException e){ 
    384                                 System.out.println("Unable to receive UDP packet"); 
    385                                 e.printStackTrace(); 
     398                                debugOut.println("Unable to receive UDP packet"); 
     399                                e.printStackTrace(debugOut); 
    386400                        } 
    387401                } 
     
    390404        public void sendoldhashes(String ip, int port){ 
    391405                try { 
    392                         System.out.println("Sending old hashes to IP:"+ip+" Port:"+port); 
     406                        debugOut.println("Sending old hashes to IP:"+ip+" Port:"+port); 
    393407                        Statement stmt = database_conn.createStatement(); 
    394408                        ResultSet rs = stmt.executeQuery("select * from ServerHashlist where Occurrence >="+m_threshold); 
     
    409423                                        sendhashdata = ""; 
    410424                                        num = 0; 
    411                                         System.out.println("UDP: Sent 18 hash entries to IP:"+ip+" port:"+port); 
     425                                        debugOut.println("UDP: Sent 18 hash entries to IP:"+ip+" port:"+port); 
    412426                                } 
    413427                        } 
     
    418432                                sendhashdata = ""; 
    419433                                num = 0; 
    420                                 System.out.println("UDP: Sent "+count+" hash entries to IP:"+ip+" port:"+port); 
     434                                debugOut.println("UDP: Sent "+count+" hash entries to IP:"+ip+" port:"+port); 
    421435                        } 
    422436                         
    423437                        rs.close(); 
    424438                } catch (Exception e) { 
    425                         System.out.println("Exception in sending old hashes to IP:"+ip); 
    426                         e.printStackTrace(); 
     439                        debugOut.println("Exception in sending old hashes to IP:"+ip); 
     440                        e.printStackTrace(debugOut); 
    427441                } 
    428442        } 
    429443         
    430444        public void sendhashtoall(String newhash, boolean exclude){ 
    431                 System.out.println("Added the entry "+newhash+" to push list and sending it to all users"); 
     445                debugOut.println("Added the entry "+newhash+" to push list and sending it to all users"); 
    432446                String clientip; 
    433447                int port; 
     
    458472                                        } 
    459473                                        catch(Exception e){ 
    460                                                 System.out.println("Something wrong in pushing new hash entry to a user"); 
    461                                                 e.printStackTrace(); 
     474                                                debugOut.println("Something wrong in pushing new hash entry to a user"); 
     475                                                e.printStackTrace(debugOut); 
    462476                                        } 
    463477                                } 
     
    465479                        rs.close(); 
    466480                } catch (SQLException e) { 
    467                         System.out.println("Unable to read data from clientdatabase while sending new hash entry to all users"); 
    468                         e.printStackTrace(); 
     481                        debugOut.println("Unable to read data from clientdatabase while sending new hash entry to all users"); 
     482                        e.printStackTrace(debugOut); 
    469483                } 
    470484        } 
     
    487501        private int socketTimeout = DEFAULT_TIMEOUT; 
    488502 
    489         public ServerProxyThread(Socket s, Connection con2, UDPServerThread udp, int m) 
     503        public ServerProxyThread(Socket s, Connection con2, UDPServerThread udp, int m, PrintStream debug) 
    490504        { 
    491505                clientSocket = s; 
     
    493507                udpthread = udp; 
    494508                m_threshold = m; 
     509                debugOut = debug; 
    495510        } 
    496511         
     
    555570                                hostName = hostName.substring(0, pos); 
    556571                        } 
    557                         //System.out.println("gotrequest url:"+url+"\nhost:"+host+"\nhostport:"+hostPort);                       
     572                        //debugOut.println("gotrequest url:"+url+"\nhost:"+host+"\nhostport:"+hostPort);                         
    558573                 
    559574                        // either forward this request to another proxy server or 
     
    569584                                } 
    570585 
    571                                 //System.out.println("computed urlhash:"+urldigest.toString()); 
     586                                //debugOut.println("computed urlhash:"+urldigest.toString()); 
    572587                                try {            
    573588                                        Statement stmt2 = conn.createStatement(); 
     
    575590                                        int num = 0; 
    576591                                        if (rs.next()) { 
    577                                                 System.out.println("ENTRY EXISTS -  UrlHash: " + rs.getString(1) 
     592                                                debugOut.println("ENTRY EXISTS -  UrlHash: " + rs.getString(1) 
    578593                                                                + " ObjectHash:" + rs.getString(2) + " Time:" 
    579594                                                                + rs.getString(3)+ " Count:"+rs.getInt(4)); 
     
    596611                                                        } 
    597612                                                } 
    598                                                 System.out.println("redirecting user to origin"); 
     613                                                debugOut.println("redirecting user to origin"); 
    599614                                                String redirectmsg ="VSNRedirect:true\r\nVSNurldigest:"+rs.getString(1)+"\r\nVSNobjectdigest:"+rs.getString(2)+"\r\nVSNtimestamp:"+rs.getTimestamp(3)+"\r\ncontent-length:0\r\n\r\n"; 
    600615                                                clientOut.write(redirectmsg.getBytes()); 
     
    608623                                        rs.close(); 
    609624                                } catch (Exception e) { 
    610                                         e.printStackTrace(); 
     625                                        e.printStackTrace(debugOut); 
    611626                                } 
    612627                        } 
     
    620635                        }  catch (Exception e)  { 
    621636                                // tell the client there was an error 
    622                                 System.out.println("Error connecting to the server"); 
     637                                debugOut.println("Error connecting to the server"); 
    623638                                String errMsg_body = "<html><head><title>503 Service Temporarily Unavailable</title></head>"+ 
    624639                                        "<body><h1>VSN ERROR MESSAGE: Service Temporarily Unavailable</h1>"+ 
     
    647662                                catch (SocketTimeoutException ste) 
    648663                                { 
    649                                         System.out.println ("Socket timeout occurred - killing connection"); 
     664                                        debugOut.println ("Socket timeout occurred - killing connection"); 
    650665                                        String errMsg_body = "<html><head><title>504 Gateway Time-out</title></head>"+ 
    651666                                                "<body><h1>VSN ERROR MESSAGE: Gateway Time-out</h1>"+ 
     
    686701                        clientSocket.close(); 
    687702                }  catch (Exception e)  { 
    688                         if (debugLevel > 0){ 
    689703                                debugOut.println("Error in ServerProxyThread: " + e); 
    690                                 e.printStackTrace(); 
    691                         } 
     704                                e.printStackTrace(debugOut); 
     705                         
    692706                } 
    693707 
     
    802816                                } catch (Exception e) { 
    803817                                        String errMsg = "request Error getting HTTP body: " + e; 
    804                                         e.printStackTrace(); 
    805                                         if (debugLevel > 0) 
    806                                                 debugOut.println(errMsg); 
     818                                        e.printStackTrace(debugOut); 
     819                                        debugOut.println(errMsg); 
    807820                                        // bs.write(errMsg.getBytes(), 0, errMsg.length()); 
    808821                                } 
    809822                        } 
    810823                } catch (Exception e) { 
    811                         if (debugLevel > 0) 
    812824                                debugOut.println("Streamhttp1 Error getting HTTP data: " + e); 
    813825                } 
     
    854866                                                responseCode = Integer.parseInt(rcString); 
    855867                                        }  catch (Exception e)  { 
    856                                                 if (debugLevel > 0) 
    857868                                                        debugOut.println("Error parsing response code " + rcString); 
    858869                                        } 
     
    908919                        if ((contentLength > 0) || (waitForDisconnect)) 
    909920                        { 
    910                                 //System.out.println("Trying to get content body"); 
     921                                //debugOut.println("Trying to get content body"); 
    911922                                try { 
    912923                                        byte[] buf = new byte[4096]; 
     
    954965                                                                                ResultSet rs = stmt2.executeQuery("select * from ServerHashlist where UrlHash='"+urldigest+"'"); 
    955966                                                                                if (rs.next()) { 
    956                                                                                         //System.out.println("ENTRY EXISTS -  UrlHash: " + rs.getString(1) 
     967                                                                                        //debugOut.println("ENTRY EXISTS -  UrlHash: " + rs.getString(1) 
    957968                                                                                        //              + " ObjectHash:" + rs.getString(2) + " Time:" 
    958969                                                                                        //              + rs.getString(3)+ " Count:"+rs.getInt(4)); 
     
    10211032                                                                                 
    10221033                                                                        } catch (Exception e) { 
    1023                                                                                 e.printStackTrace(); 
     1034                                                                                e.printStackTrace(debugOut); 
    10241035                                                                        }                        
    10251036                                                                } 
     
    10351046                                }  catch (Exception e)  { 
    10361047                                        String errMsg = "Streamhttp2 Error getting HTTP body: " + e; 
    1037                                         e.printStackTrace(); 
    1038                                         if (debugLevel > 0) 
    1039                                                 debugOut.println(errMsg); 
     1048                                        e.printStackTrace(debugOut); 
     1049                                        debugOut.println(errMsg); 
    10401050                                        //bs.write(errMsg.getBytes(), 0, errMsg.length()); 
    10411051                                } 
    10421052                        } 
    10431053                }  catch (Exception e)  { 
    1044                         if (debugLevel > 0) 
    1045                                 debugOut.println("Streamhttp2(b) Error getting HTTP data: " + e); 
     1054                        debugOut.println("Streamhttp2(b) Error getting HTTP data: " + e); 
    10461055                } 
    10471056                 
     
    10831092                        } 
    10841093                }  catch (Exception e)  { 
    1085                         if (debugLevel > 0) 
    10861094                                debugOut.println("Error getting header: " + e); 
    10871095                } 
Note: See TracChangeset for help on using the changeset viewer.