1 111 package com.ivata.groupware.business.mail.server; 112 113 import java.util.Collection ; 114 import java.util.Iterator ; 115 import java.util.List ; 116 117 import com.ivata.groupware.admin.script.ScriptExecutor; 118 import com.ivata.groupware.admin.security.server.SecuritySession; 119 import com.ivata.groupware.admin.setting.Settings; 120 import com.ivata.groupware.business.addressbook.AddressBook; 121 import com.ivata.mask.util.CollectionHandling; 122 import com.ivata.mask.util.SystemException; 123 124 125 144 public class ScriptMailServer extends JavaMailServer implements MailServer { 145 String [] environmentVariables = null; 146 private ScriptExecutor scriptExecutor; 147 150 String scriptPath; 151 152 private Settings settings; 153 157 private String userNamePrefix; 158 AddressBook addressBook; 159 160 163 public ScriptMailServer(final ScriptExecutor scriptExecutor, 164 final String userNamePrefix, 165 final AddressBook addressBook, 166 final Settings settings 167 ) { 168 super(addressBook, settings); 169 this.scriptExecutor = scriptExecutor; 170 this.settings = settings; 171 this.userNamePrefix = userNamePrefix; 172 this.addressBook = addressBook; 173 } 174 175 185 public void addUser(final SecuritySession securitySession, 186 final String userName, 187 final String fileAs) 188 throws SystemException { 189 String [] argv = new String [2]; 190 191 argv[0] = getSystemUserName(securitySession, userName); 192 argv[1] = fileAs; 193 194 scriptExecutor.exec("addUser", argv); 195 argv = new String [3]; 196 197 argv[0] = getSystemUserName(securitySession, userName); 198 argv[1] = getSystemUserName(securitySession, 199 securitySession.getUser().getName()); 200 argv[2] = getSystemUserName(securitySession, 201 securitySession.getPassword()); 202 scriptExecutor.exec("makeMaildir", argv); 203 } 204 205 217 public final Collection getList(final SecuritySession securitySession, 218 final String name) 219 throws SystemException { 220 String [] argv = new String [1]; 221 222 argv[0] = name; 223 224 return CollectionHandling.convertFromLines(scriptExecutor.exec("getList", argv)); 225 } 226 227 233 public final String getSystemUserName(final SecuritySession securitySession, 234 final String userName) { 235 if (userNamePrefix.length() > 0) { 238 return userNamePrefix + "_" + userName; 239 } else { 240 return userName; 241 } 242 } 243 244 255 public List getUserAliases(final SecuritySession securitySession, 256 final String userName) 257 throws SystemException { 258 String [] argv = new String [1]; 259 260 argv[0] = getSystemUserName(securitySession, userName); 261 262 return CollectionHandling.convertFromLines(scriptExecutor.exec("getUserAliases", argv)); 263 } 264 265 277 public final String getUserForwarding(final SecuritySession securitySession, 278 final String userName) 279 throws SystemException { 280 String [] argv = new String [1]; 281 282 argv[0] = getSystemUserName(securitySession, userName); 283 284 return scriptExecutor.exec("getUserForwarding", argv); 285 } 286 287 292 public final String getUserNameFromSystemUserName(final SecuritySession securitySession, 293 final String systemUserName) { 294 if ((userNamePrefix.length() > 0) && systemUserName.startsWith(userNamePrefix)) { 295 return systemUserName.substring(userNamePrefix.length() + 1); 296 } else { 297 return systemUserName; 298 } 299 } 300 301 314 public final String getVacationMessage(final SecuritySession securitySession, 315 final String userName) 316 throws SystemException { 317 String [] argv = new String [1]; 318 319 argv[0] = getSystemUserName(securitySession, userName); 320 321 String vacationMessage = scriptExecutor.exec("getVacationMessage", argv); 322 323 return vacationMessage.equals("") ? null : vacationMessage; 325 } 326 327 337 public void removeList(final SecuritySession securitySession, 338 final String name) throws SystemException { 339 String [] argv = new String [1]; 340 341 argv[0] = name; 342 scriptExecutor.exec("removeList", argv); 343 } 344 345 362 public void removeUser(final SecuritySession securitySession, 363 final String userName) throws SystemException { 364 String [] argv = new String [1]; 365 366 argv[0] = getSystemUserName(securitySession, userName); 367 scriptExecutor.exec("removeUser", argv); 368 } 369 370 386 public final void setList(final SecuritySession securitySession, 387 final String name, 388 final Collection users) 389 throws SystemException { 390 String [] argv = new String [users.size() + 1]; 391 argv[0] = name; 392 int index = 1; 393 394 for (Iterator i = users.iterator(); i.hasNext(); ++index) { 395 argv[index] = (String ) i.next(); 396 } 397 398 scriptExecutor.exec("setList", argv); 399 } 400 401 411 public final void setPassword(final SecuritySession securitySession, 412 final String userName, 413 final String password) 414 throws SystemException { 415 String [] argv = new String [3]; 416 417 argv[0] = getSystemUserName(securitySession, userName); 418 argv[1] = password; 419 argv[2] = "1"; 422 scriptExecutor.exec("setPassword", argv); 423 } 424 425 436 public final void setUserAliases(final SecuritySession securitySession, 437 final String userName, 438 final Collection aliases) 439 throws SystemException { 440 String [] argv = new String [aliases.size() + 1]; 441 442 argv[0] = getSystemUserName(securitySession, userName); 443 444 int index = 1; 445 446 for (Iterator i = aliases.iterator(); i.hasNext(); ++index) { 447 argv[index] = (String ) i.next(); 448 } 449 450 scriptExecutor.exec("setUserAliases", argv); 451 } 452 453 471 public final void setUserForwarding(final SecuritySession securitySession, 472 final String userName, 473 final String address) 474 throws SystemException { 475 String [] argv = new String [2]; 476 477 argv[0] = getSystemUserName(securitySession, userName); 478 argv[1] = address; 479 scriptExecutor.exec("setUserForwarding", argv); 480 } 481 482 504 public final void setVacationMessage(final SecuritySession securitySession, 505 final String userName, 506 final String messageParam) 507 throws SystemException { 508 String [] argv = new String [2]; 509 String message = messageParam; 510 511 if (message == null) { 514 message = ""; 515 } 516 517 argv[0] = getSystemUserName(securitySession, userName); 518 argv[1] = message; 519 scriptExecutor.exec("setVacationMessage", argv); 520 } 521 522 529 public boolean isUser(final SecuritySession securitySession, 530 final String userNameParam) throws SystemException { 531 String [] argv = new String [1]; 532 533 argv[0] = getSystemUserName(securitySession, userNameParam); 534 535 String isUser = scriptExecutor.exec("isUser", argv).trim(); 536 return "true".equals(isUser); 537 } 538 539 } 540 | Popular Tags |