/* * Copyright (C) 2004-2015 L2J Server * * This file is part of L2J Server. * * L2J Server is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * L2J Server is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ package com.l2jserver.gameserver.network.serverpackets; import java.util.logging.Level; import com.l2jserver.gameserver.cache.HtmCache; import com.l2jserver.gameserver.enums.HtmlActionScope; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.util.Util; /** * @author HorridoJoho */ public abstract class AbstractHtmlPacket extends L2GameServerPacket { public static final char VAR_PARAM_START_CHAR = '$'; private final int _npcObjId; private String _html = null; private boolean _disabledValidation = false; protected AbstractHtmlPacket() { _npcObjId = 0; } protected AbstractHtmlPacket(int npcObjId) { if (npcObjId < 0) { throw new IllegalArgumentException(); } _npcObjId = npcObjId; } protected AbstractHtmlPacket(String html) { _npcObjId = 0; setHtml(html); } protected AbstractHtmlPacket(int npcObjId, String html) { if (npcObjId < 0) { throw new IllegalArgumentException(); } _npcObjId = npcObjId; setHtml(html); } public final void disableValidation() { _disabledValidation = true; } public final void setHtml(String html) { if (html.length() > 17200) { _log.log(Level.WARNING, "Html is too long! this will crash the client!", new Throwable()); _html = html.substring(0, 17200); } if (!html.contains(""; } _html = html; } public final boolean setFile(String prefix, String path) { String content = HtmCache.getInstance().getHtm(prefix, path); if (content == null) { setHtml("My Text is missing:
" + path + ""); _log.warning("missing html page " + path); return false; } setHtml(content); return true; } public final void replace(String pattern, String value) { _html = _html.replaceAll(pattern, value.replaceAll("\\$", "\\\\\\$")); } public final void replace(String pattern, boolean val) { replace(pattern, String.valueOf(val)); } public final void replace(String pattern, int val) { replace(pattern, String.valueOf(val)); } public final void replace(String pattern, long val) { replace(pattern, String.valueOf(val)); } public final void replace(String pattern, double val) { replace(pattern, String.valueOf(val)); } @Override public final void runImpl() { L2PcInstance player = getClient().getActiveChar(); player.clearHtmlActions(getScope()); if (_disabledValidation) { return; } Util.buildHtmlActionCache(player, getScope(), _npcObjId, _html); } public final int getNpcObjId() { return _npcObjId; } public final String getHtml() { return _html; } public abstract HtmlActionScope getScope(); }