]>
jfr.im git - irc/Ozafy/borknet_p10_irc_services.git/blob - core/CoreDBControl.java
3 # BorkNet Services Core
7 # Copyright (C) 2004 Ozafy - ozafy@borknet.org - http://www.borknet.org
9 # This program is free software; you can redistribute it and/or
10 # modify it under the terms of the GNU General Public License
11 # as published by the Free Software Foundation; either version 2
12 # of the License, or (at your option) any later version.
14 # This program is distributed in the hope that it will be useful,
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 # GNU General Public License for more details.
19 # You should have received a copy of the GNU General Public License
20 # along with this program; if not, write to the Free Software
21 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
24 package borknet_services
.core
;
28 import java
.security
.*;
29 import borknet_services
.core
.*;
31 public class CoreDBControl
35 private HashMap
<String
,User
> usersByNumeric
= new HashMap
<String
,User
>();
36 private HashMap
<String
,User
> usersByNick
= new HashMap
<String
,User
>();
37 private HashMap
<String
,ArrayList
<User
>> usersByAuth
= new HashMap
<String
,ArrayList
<User
>>();
38 private HashMap
<String
,ArrayList
<User
>> usersByHost
= new HashMap
<String
,ArrayList
<User
>>();
39 private HashMap
<String
,ArrayList
<User
>> usersByIP
= new HashMap
<String
,ArrayList
<User
>>();
41 private HashMap
<String
,Server
> serversByNumeric
= new HashMap
<String
,Server
>();
42 private HashMap
<String
,ArrayList
<Server
>> serversByHub
= new HashMap
<String
,ArrayList
<Server
>>();
43 private HashMap
<String
,Server
> serversByHost
= new HashMap
<String
,Server
>();
45 private HashMap
<String
,Channel
> channels
= new HashMap
<String
,Channel
>();
47 public CoreDBControl(Core C
)
54 usersByNumeric
= new HashMap
<String
,User
>();
55 usersByNick
= new HashMap
<String
,User
>();
56 usersByAuth
= new HashMap
<String
,ArrayList
<User
>>();
57 usersByHost
= new HashMap
<String
,ArrayList
<User
>>();
58 usersByIP
= new HashMap
<String
,ArrayList
<User
>>();
61 public boolean chanExists(String chan
)
63 Channel c
= channels
.get(chan
.toLowerCase());
64 return (c
instanceof Channel
);
67 public Channel
getChannel(String chan
)
69 return channels
.get(chan
.toLowerCase());
72 public boolean authOnline(String auth
)
74 return usersByAuth
.containsKey(auth
.toLowerCase());
77 public String
getNumViaAuth(String auth
)
79 User u
= usersByAuth
.get(auth
.toLowerCase()).get(0);
82 return u
.getNumeric();
90 public String
getNumViaNick(String nick
)
92 User u
= usersByNick
.get(nick
.toLowerCase());
95 return u
.getNumeric();
103 public boolean isService(String numeric
)
105 Server s
= serversByNumeric
.get(numeric
.substring(0,2));
106 if(s
instanceof Server
)
108 return s
.getService();
116 public String
getServer(String numeric
)
118 Server s
= serversByNumeric
.get(numeric
.substring(0,2));
119 if(s
instanceof Server
)
129 public int getServerCount()
131 return serversByNumeric
.size();
134 public boolean isServerNumeric(String numer
)
136 Server s
= serversByNumeric
.get(numer
);
137 if(s
instanceof Server
)
147 public boolean isOpChan(String user
, String channel
)
149 Channel c
= channels
.get(channel
.toLowerCase());
150 if(c
instanceof Channel
)
160 public boolean isNickUsed(String nick
)
162 return usersByNick
.containsKey(nick
.toLowerCase());
165 public boolean isOnChan(String user
, String channel
)
167 Channel c
= channels
.get(channel
.toLowerCase());
168 if(c
instanceof Channel
)
178 public boolean chanHasOps(String channel
)
180 Channel c
= channels
.get(channel
.toLowerCase());
181 if(c
instanceof Channel
)
191 public int getChanUsers(String channel
)
193 Channel c
= channels
.get(channel
.toLowerCase());
194 if(c
instanceof Channel
)
196 return c
.getUsercount();
204 public int getAuthUsers(String auth
)
208 return usersByAuth
.get(auth
.toLowerCase()).size();
216 public int getHostCount(String host
)
220 return usersByHost
.get(host
.toLowerCase()).size();
228 public int getIpCount(String ip
)
232 return usersByIP
.get(ip
).size();
240 public HashMap
<String
,User
> getUsers()
242 return usersByNumeric
;
245 public User
getUserViaAuth(String auth
)
247 return usersByAuth
.get(auth
.toLowerCase()).get(0);
250 public User
getUserViaHost(String host
)
252 return usersByHost
.get(host
.toLowerCase()).get(0);
255 public User
getUserViaNick(String nick
)
257 return usersByNick
.get(nick
.toLowerCase());
260 public User
getUser(String user
)
262 return usersByNumeric
.get(user
);
265 public ArrayList
<String
> getUserChans(String user
)
267 User u
= usersByNumeric
.get(user
);
268 if(u
instanceof User
)
270 return u
.getChannels();
274 return new ArrayList
<String
>();
278 public int getChannelCount()
280 return channels
.size();
283 public ArrayList
<User
> getUserRowsViaAuth(String auth
)
285 return usersByAuth
.get(auth
.toLowerCase());
288 public void setUserField(String numer
, int colum
, String info
)
290 User u
= usersByNumeric
.get(numer
);
291 if(u
instanceof User
)
299 usersByNumeric
.remove(numer
);
300 usersByNumeric
.put(info
,u
);
303 String oldkey
= u
.getNick();
305 if(usersByNick
.containsKey(oldkey
.toLowerCase()))
307 usersByNick
.remove(oldkey
.toLowerCase());
309 usersByNick
.put(info
.toLowerCase(),u
);
312 String
[] splithost
= info
.split("@");
313 u
.setIdent(splithost
[0]);
314 u
.setHost(splithost
[1]);
315 if(usersByHost
.containsKey(info
.toLowerCase()))
317 ArrayList
<User
> users
= usersByHost
.get(info
.toLowerCase());
319 usersByHost
.put(info
.toLowerCase(),users
);
323 ArrayList
<User
> users
= new ArrayList
<User
>();
325 usersByHost
.put(info
.toLowerCase(),users
);
333 if(usersByAuth
.containsKey(info
.toLowerCase()))
335 ArrayList
<User
> users
= usersByAuth
.get(info
.toLowerCase());
337 usersByAuth
.put(info
.toLowerCase(),users
);
341 ArrayList
<User
> users
= new ArrayList
<User
>();
343 usersByAuth
.put(info
.toLowerCase(),users
);
347 u
.setOperator(Boolean
.parseBoolean(info
));
354 if(usersByIP
.containsKey(info
))
356 ArrayList
<User
> users
= usersByIP
.get(info
);
358 usersByIP
.put(info
.toLowerCase(),users
);
362 ArrayList
<User
> users
= new ArrayList
<User
>();
364 usersByIP
.put(info
,users
);
372 catch ( Exception e
)
374 System
.out
.println( "Error finding user." );
376 C
.die("SQL error, trying to die gracefully.");
381 System
.out
.println( "Error finding user." );
382 C
.printDebug("Error finding user.");
386 public void setUserChanMode(String user
, String chan
, String mode
)
388 Channel c
= channels
.get(chan
.toLowerCase());
389 if(c
instanceof Channel
)
391 c
.setUserChanMode(user
,mode
);
395 public void delUser(String numer
)
399 User u
= usersByNumeric
.get(numer
);
400 usersByNick
.remove(u
.getNick().toLowerCase());
401 ArrayList
<User
> users
= usersByAuth
.get(u
.getAuth().toLowerCase());
402 if(users
instanceof ArrayList
)
407 usersByAuth
.put(u
.getAuth(),users
);
411 usersByAuth
.remove(u
.getAuth());
414 users
= usersByHost
.get(u
.getHost());
418 usersByHost
.put(u
.getHost(),users
);
422 usersByHost
.remove(u
.getHost());
424 users
= usersByIP
.get(u
.getIp());
428 usersByIP
.put(u
.getIp(),users
);
432 usersByIP
.remove(u
.getIp());
434 usersByNumeric
.remove(numer
);
436 ArrayList
<String
> userchannels
= u
.getChannels();
437 for(String channel
: userchannels
)
439 delUserChan(channel
, numer
);
442 catch ( Exception e
)
447 public void delServer(String host
)
449 Server s
= serversByHost
.get(host
.toLowerCase());
450 if(s
instanceof Server
)
453 String numer
= s
.getNumeric();
454 String hub
= s
.getHub();
455 ArrayList
<Server
> servers
= serversByHub
.get(hub
);
456 if(servers
instanceof ArrayList
)
458 for(int i
=0; i
<servers
.size(); i
++)
460 if(servers
.get(i
).equals(s
))
470 System
.out
.println ( "Error Removing server: "+host
);
471 C
.die("SQL error, trying to die gracefully.");
475 public void delChildren(String host
)
477 Server s
= serversByHost
.get(host
.toLowerCase());
478 if(s
instanceof Server
)
480 String numer
= s
.getNumeric();
481 ArrayList
<Server
> servers
= serversByHub
.get(numer
);
482 if(servers
instanceof ArrayList
)
484 for(Server ser
: servers
)
486 delChildren(ser
.getHost());
489 ArrayList
<String
> numerics
= new ArrayList
<String
>(usersByNumeric
.keySet());
490 for(String n
: numerics
)
492 if(n
.startsWith(numer
))
497 serversByHub
.remove(numer
);
498 serversByNumeric
.remove(numer
);
499 serversByHost
.remove(host
.toLowerCase());
503 System
.out
.println ( "Error Removing server: "+host
);
504 C
.die("SQL error, trying to die gracefully.");
508 public void delUserChan(String chan
, String user
)
510 Channel c
= channels
.get(chan
.toLowerCase());
511 if(c
instanceof Channel
)
515 if(c
.getUsercount()<=0)
517 channels
.remove(chan
.toLowerCase());
519 User u
= usersByNumeric
.get(user
);
520 if(u
instanceof User
)
526 public void addUser(String nume
,String nick
, String host
, String mode
, String auth
, boolean isop
, String server
, String ip
, String fake
)
530 User u
= new User(nume
);
532 String
[] splithost
= host
.split("@");
533 u
.setIdent(splithost
[0]);
534 u
.setHost(splithost
[1]);
541 usersByNumeric
.put(nume
,u
);
542 usersByNick
.put(nick
.toLowerCase(),u
);
543 if(!auth
.equals("0"))
545 if(usersByAuth
.containsKey(auth
.toLowerCase()))
547 ArrayList
<User
> users
= usersByAuth
.get(auth
.toLowerCase());
549 usersByAuth
.put(auth
.toLowerCase(),users
);
553 ArrayList
<User
> users
= new ArrayList
<User
>();
555 usersByAuth
.put(auth
.toLowerCase(),users
);
558 if(usersByHost
.containsKey(splithost
[1]))
560 ArrayList
<User
> users
= usersByHost
.get(splithost
[1]);
562 usersByHost
.put(splithost
[1],users
);
566 ArrayList
<User
> users
= new ArrayList
<User
>();
568 usersByHost
.put(splithost
[1],users
);
570 if(usersByIP
.containsKey(ip
))
572 ArrayList
<User
> users
= usersByIP
.get(ip
);
574 usersByIP
.put(ip
,users
);
578 ArrayList
<User
> users
= new ArrayList
<User
>();
580 usersByIP
.put(ip
,users
);
583 catch ( Exception e
)
585 System
.out
.println ( "Error executing statement" );
587 C
.die("SQL error, trying to die gracefully.");
591 public void addServer(String numer
, String host
,String hub
, boolean service
)
595 Server s
= new Server(numer
);
596 s
.setHost(host
.toLowerCase());
598 s
.setService(service
);
599 serversByHost
.put(host
.toLowerCase(),s
);
600 serversByNumeric
.put(numer
,s
);
601 if(serversByHub
.containsKey(hub
))
603 ArrayList
<Server
> servers
= serversByHub
.get(hub
);
605 serversByHub
.put(hub
,servers
);
609 ArrayList
<Server
> servers
= new ArrayList
<Server
>();
611 serversByHub
.put(hub
,servers
);
616 System
.out
.println ( "Error executing statement" );
618 C
.die("SQL error, trying to die gracefully.");
622 public void addUserChan(String channel
,String user
,String timestamp
, Boolean isop
, Boolean isvoice
)
624 Channel c
= channels
.get(channel
.toLowerCase());
625 if(c
instanceof Channel
)
627 c
.addUser(user
,isop
,isvoice
);
631 c
= new Channel(channel
,timestamp
,user
,isop
,isvoice
);
632 channels
.put(channel
.toLowerCase(),c
);
634 User u
= usersByNumeric
.get(user
);
635 if(u
instanceof User
)
637 u
.joinChannel(channel
);