summaryrefslogblamecommitdiff
path: root/server/piztor/server.py
blob: 5d2382d02ce3441dcd2d11ce6b34d40aad224df0 (plain) (tree)
1
2
3
4
5



                                                         
                                                   














                                                                  





















                                                   

                          
                            











































                                                                         
                      





                                    







                                                        










                                                                       
                                      









                                                             
                                                   







                                              
                                                                   
                                                   



                                                                      





                                                                          



                                            
                      
























                                                                          
                                                                             








                                                                 
                                                                         




                                                             
                
                                      


                                       






















                                                                         
                                                                                
                                                                  
                                                            


                                                                           
                        
                                                                  
                                           
                                   





                                                                   
 






                                                   

                                             









                                                       




                                          
                                                     

                                        
                                                                    
 









                                                                       
                                                                          

                                                       

                                                





                                                                  


                                                             
 







                                                              
 

                                    
 
                                                     
                                                                   
                                                                           

                    


                                  

                                   



                                      
                                  
 
                                

                           



                                               


                                               
                                             


                                 
                           









                                                                               

                             












                                                    
                             

                          

                                     
                                  
                        



                                            
from twisted.internet.protocol import Protocol
from twisted.internet.protocol import Factory
from twisted.internet.endpoints import TCP4ServerEndpoint
from twisted.internet import reactor
from twisted.protocols.policies import TimeoutMixin

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound

import struct
import os
import logging

from exc import *
from model import *

def get_hex(data):
    return "".join([hex(ord(c))[2:].zfill(2) for c in data])

db_path = "piztor.sqlite"
FORMAT = "%(asctime)-15s %(message)s"
logging.basicConfig(format = FORMAT)
logger = logging.getLogger('piztor_server')
logger.setLevel(logging.INFO)


class _SectionSize:
    LENGTH = 4
    OPT_ID = 1
    STATUS = 1
    USER_ID = 4
    USER_TOKEN = 32
    GROUP_ID = 4
    ENTRY_CNT = 4
    LATITUDE = 8
    LONGITUDE = 8
    LOCATION_ENTRY = USER_ID + LATITUDE + LONGITUDE
    PADDING = 1

class _OptCode:
    user_auth = 0x00
    location_update = 0x01
    location_request= 0x02
    user_info_request = 0x03

class _StatusCode:
    sucess = 0x00
    failure = 0x01

class RequestHandler(object):
    def __init__(self):
        self.engine = create_engine('sqlite:///' + db_path, echo = False)
        self.Session = sessionmaker(bind = self.