8 #include "pol_global_config.h" 14 #include "../../bscript/berror.h" 15 #include "../../bscript/bobject.h" 16 #include "../../bscript/bstruct.h" 17 #include "../../bscript/executor.h" 18 #include "../../bscript/impstr.h" 19 #include "../../clib/cfgelem.h" 20 #include "../../clib/clib.h" 21 #include "../../clib/esignal.h" 22 #include "../../clib/logfacility.h" 23 #include "../../clib/sckutil.h" 24 #include "../../clib/socketsvc.h" 25 #include "../../clib/threadhelp.h" 26 #include "../../clib/wnsckt.h" 27 #include "../../plib/pkg.h" 28 #include "../globals/network.h" 29 #include "../module/osmod.h" 30 #include "../module/uomod.h" 31 #include "../polsem.h" 32 #include "../scrdef.h" 33 #include "../scrsched.h" 34 #include "../uoexec.h" 47 return "<AuxConnection>";
62 if ( stricmp( membername,
"ip" ) == 0 )
71 if ( stricmp( methodname,
"transmit" ) == 0 )
99 : SocketClientThread( listener ),
100 _auxservice( auxsvc ),
105 _assume_string( false ),
106 _transmit_counter( 0 )
134 if ( uoemod ==
nullptr )
136 _uoexec = uoemod->uoexec.weakptr;
157 unsigned int addr1part, addr2part;
158 struct sockaddr_in* sockin =
reinterpret_cast<struct sockaddr_in*
>( &MyPeer );
166 if ( addr1part == addr2part )
185 bool result, timeout_exit;
189 if ( !result && !timeout_exit )
198 std::istringstream is( tmp );
199 std::unique_ptr<Bscript::BObjectImp> value(
_uoexec->auxsvc_assume_string
205 event->addMember(
"value", value.release() );
206 _uoexec->os_module->signal_event( event.release() );
217 std::this_thread::sleep_for( std::chrono::seconds( 1 ) );
244 _scriptdef( elem.remove_string(
"SCRIPT" ), _pkg ),
245 _port( elem.remove_ushort(
"PORT" ) )
250 auto delim = iptext.find_first_of(
'/' );
251 if ( delim != std::string::npos )
253 std::string ipaddr_str = iptext.substr( 0, delim );
254 std::string ipmask_str = iptext.substr( delim + 1 );
255 unsigned int ipaddr = inet_addr( ipaddr_str.c_str() );
256 unsigned int ipmask = inet_addr( ipmask_str.c_str() );
262 unsigned int ipaddr = inet_addr( iptext.c_str() );
282 std::unique_ptr<AuxClientThread> _clientptr( client );
293 + 3 *
sizeof(
unsigned int* ) +
_aux_ip_match.capacity() *
sizeof(
unsigned int ) +
SocketClientThread(SocketListener &SL)
Bscript::BObjectImp * _params
virtual Bscript::BObjectImp * call_method(const char *methodname, Bscript::Executor &ex) POL_OVERRIDE
virtual size_t sizeEstimate() const POL_OVERRIDE
virtual std::string getStringRep() const =0
AuxClientThread * _auxclientthread
void load_packaged_cfgs(const char *cfgname, const char *taglist, void(*loadentry)(const Package *, Clib::ConfigElem &))
virtual bool isTrue() const POL_OVERRIDE
AuxConnection(AuxClientThread *auxclientthread, std::string ip)
size_t estimateSize() const
size_t estimatedSize() const
void start_aux_services()
std::vector< unsigned int > _aux_ip_match
Core::ScriptDef _scriptdef
std::string relativename(const Plib::Package *pkg=nullptr) const
std::vector< Network::AuxService * > auxservices
void start_thread(void(*entry)(void *), const char *thread_name, void *arg)
void transmit(const Bscript::BObjectImp *imp)
std::string getpeername() const
AuxClientThread(AuxService *auxsvc, Clib::SocketListener &listener)
virtual Bscript::BObjectImp * copy() const POL_OVERRIDE
virtual std::string pack() const
std::vector< unsigned int > _aux_ip_match_mask
weak_ptr< Core::UOExecutor > _uoexec
std::unique_ptr< threadhelp::DynTaskThreadPool > auxthreadpool
ref_ptr< AuxConnection > _auxconnection
NetworkManager networkManager
void load_auxservice_entry(const Plib::Package *pkg, Clib::ConfigElem &elem)
void writeline(Socket &sck, const std::string &s)
static UninitObject * create()
std::atomic< int > _transmit_counter
void aux_service_thread_stub(void *arg)
const Core::ScriptDef & scriptdef() const
static BObjectImp * unpack(const char *pstr)
Core::ScriptDef _scriptdef
virtual Bscript::BObjectRef get_member(const char *membername) POL_OVERRIDE
virtual void run() POL_OVERRIDE
bool remove_prop(const char *propname, std::string *value)
bool ipAllowed(sockaddr MyPeer)
struct sockaddr peer_address() const
virtual std::string getStringRep() const POL_OVERRIDE
void start_script(const char *filename, Bscript::BObjectImp *param0, Bscript::BObjectImp *param1)
bool GetConnection(unsigned int timeout_sec)
bool readline(Socket &sck, std::string &s, bool *timeout_exit, unsigned int timeout_secs, unsigned maxlen)
std::atomic< bool > exit_signalled
BObjectImp * getParamImp(unsigned param)
AuxService(const Plib::Package *pkg, Clib::ConfigElem &elem)