diff --git a/agent/Makefile.in b/agent/Makefile.in index 696ce9a283e07eb16c5bc672eca5ae99447f9117..f73768f65bbe75079cbbc833a0109fc6717c67e7 100644 --- a/agent/Makefile.in +++ b/agent/Makefile.in @@ -38,14 +38,20 @@ GSOAPREL = 15 GSOAPURL = http://ufpr.dl.sourceforge.net/project/gsoap2/gSOAP/gSOAP%202.7.15%20stable/gsoap_$(GSOAPVER).$(GSOAPREL).tar.gz GSOAP = gsoap-$(GSOAPVER) +WGETVER = 1.13 +WGETREL = 4 +WGETURL = http://gnu.c3sl.ufpr.br/ftp/wget/wget-$(WGETVER).$(WGETREL).tar.gz +WGET = wget-$(WGETVER).$(WGETREL) + WSNAME = DataSID -WSURL = http://bisimmcdev.c3sl.ufpr.br:8080/axis2/services/$(WSNAME)?wsdl +WSURL = http://simmc.c3sl.ufpr.br/axis2/services/$(WSNAME)?wsdl FILES = bin/datasid-agent.sh bin/datasid-client.sh \ bin/datasid-common.sh bin/datasid-gsoap-client \ bin/datasid-wget.sh bin/datasid-xml-generator \ bin/datasid-check.sh bin/datasid-netmon.sh \ bin/datasid-network-usage.sh \ + bin/datasid-builtin-wget \ conf/datasid.conf \ gen-scripts/collected-data/agent-version.tree \ gen-scripts/collected-data/telecentro-info.tree \ @@ -66,12 +72,12 @@ FILES = bin/datasid-agent.sh bin/datasid-client.sh \ network-scripts/net-collected-data/telecentro-id.tree .PHONY: all -all: bin/datasid-xml-generator bin/datasid-gsoap-client +all: bin/datasid-xml-generator bin/datasid-gsoap-client bin/datasid-builtin-wget .PHONY: clean clean: @rm -rf $(BUILD) - @rm -rf bin/datasid-xml-generator bin/datasid-gsoap-client + @rm -rf bin/datasid-xml-generator bin/datasid-gsoap-client bin/datasid-builtin-wget ########### @@ -161,7 +167,31 @@ bin/datasid-gsoap-client: $(BUILD)/client.o $(BUILD)/soapC.o $(BUILD)/soapClient @mkdir -p bin $(CC) -o $@ $(LDFLAGS) $^ +######## +# wget # +######## + +$(BUILD)/$(WGET).tar.gz: + @mkdir -p $(BUILD) + wget -O $@ $(WGETURL) + +$(BUILD)/$(WGET)/.extracted: $(BUILD)/$(WGET).tar.gz + cd $(BUILD); tar xzvf $(WGET).tar.gz + @touch $@ +$(BUILD)/$(WGET)/Makefile: $(BUILD)/$(WGET)/.extracted + cd $(BUILD)/$(WGET); \ + CFLAGS=-m32 ./configure --prefix=$(realpath $(BUILD)) \ + --without-ssl --disable-opie --disable-digest \ + --disable-ntlm --disable-debug --disable-nls --disable-largefile \ + --disable-ipv6 --disable-rpath --disable-iri; \ + make LDFLAGS=-static + +bin/datasid-builtin-wget: $(BUILD)/$(WGET)/Makefile + @mkdir -p "$(BUILD)/bin" + cp -a "$(BUILD)/$(WGET)/src/wget" "$(BUILD)/bin" + mv "$(BUILD)/bin/wget" $@ + ########### # install # ########### diff --git a/agent/bin/datasid-agent.sh b/agent/bin/datasid-agent.sh index f1bbe19091edb6ea5567fcfce26a803b0707757e..ed8bf2bbae10e21584d49c4cdd4c8c4e8d143232 100755 --- a/agent/bin/datasid-agent.sh +++ b/agent/bin/datasid-agent.sh @@ -68,7 +68,7 @@ function checkUpdate() # If $FIST_EXECUTION is set, do not run the update. Otherwise, run the # update and return 1 in case of error - test "${FIRST_EXECUTION}" || sudo bash ${DATADIR}/datasid-update.run || return 1 + test "${FIRST_EXECUTION}" || bash ${DATADIR}/datasid-update.run || return 1 rm -f ${DATADIR}/datasid-update.run @@ -91,7 +91,7 @@ function schedule() MIN=$(( $RANDOM % 60 )) fi - cronAgent="${MIN} * * * * ${PREFIX}/bin/datasid-check.sh && ${PREFIX}/bin/datasid-agent.sh && ${PREFIX}/bin/datasid-network-usage.sh" + cronAgent="${MIN} * * * * ${PREFIX}/bin/datasid-check.sh; ${PREFIX}/bin/datasid-agent.sh; ${PREFIX}/bin/datasid-network-usage.sh" cronNetmon="0-59/5 * * * * ${PREFIX}/bin/datasid-netmon.sh" cronReboot="@reboot ${PREFIX}/bin/datasid-agent.sh" diff --git a/agent/bin/datasid-common.sh b/agent/bin/datasid-common.sh index 41f385049ea9d4cb62cdff061229b583dcc71e73..c9e71df10a88cba44e0f15c5daa01969bf2d8b06 100755 --- a/agent/bin/datasid-common.sh +++ b/agent/bin/datasid-common.sh @@ -57,13 +57,13 @@ done < ${conf} if ! test -f "${PROXYCONF}"; then date +"%F %T - WARNING: Proxy file not found." + # Read config file and declare only valid variables +else + while read var; do + test -n "$(echo $var | egrep -i "^[a-z_]+=")" && eval "export ${var}" + done < ${PROXYCONF} fi -# Read config file and declare only valid variables -while read var; do - test -n "$(echo $var | egrep -i "^[a-z_]+=")" && eval "export ${var}" -done < ${PROXYCONF} - # Create "data" and "log" directories if needed mkdir -p ${DATADIR} ${LOGDIR} diff --git a/agent/bin/datasid-netmon.sh b/agent/bin/datasid-netmon.sh index d29c1abb86ca3a607ccd74a197719bc034dc216c..e0c31389dcfc99cf7477453ed0946e22c1bd3590 100755 --- a/agent/bin/datasid-netmon.sh +++ b/agent/bin/datasid-netmon.sh @@ -81,11 +81,6 @@ if test -z "${PREFIX}"; then exit 2 fi -# If the user is not in the sudoers(1) -if ! sudo -v &> /dev/null; then - exit 0 -fi - cd ${DATADIR} # Collected data from the current day @@ -105,7 +100,7 @@ IPTABLES=$(which iptables) test $? -ne 0 && IPTABLES="/sbin/iptables" test -x $IP || exit 1 -test -x $IPTABLES || exit 1 +test -x $IPTABLES || (IPTABLES="/usr/sbin/iptables" && test -x $IPTABLES) || exit 1 #------------------------------------------------------------------------------ diff --git a/agent/bootstrap/install b/agent/bootstrap/install index a252fe808546baebead874a54942b629af155770..17e4da90a1f8bf151df4254201f4a5fd80fcbd23 100644 --- a/agent/bootstrap/install +++ b/agent/bootstrap/install @@ -126,27 +126,6 @@ printf "Iniciando instalação do agente DATASID. Tenha certeza de %b%b%b\n" \ "estar conectado à Internet. Além disso, para o agente funcionar \n" \ "são necessários os pacotes \"cron\" e \"sudo\".\n\n" >&3 -PROXY_HOST="" -PROXY_PORT="" -PROXY_USERNAME="" -PROXY_PASSWORD="" - -printf "Deseja utilizar proxy? [s/N] " >&3 -read USEPROXY - -if test "$USEPROXY" == "s" -o "$USEPROXY" == "S"; then - printf "Insira o HOST de seu proxy: " >&3 - read PROXY_HOST - - printf "Insira a PORTA de seu proxy: " >&3 - read PROXY_PORT - - printf "Insira o USUÃRIO de seu proxy: " >&3 - read PROXY_USERNAME - - printf "Insira a SENHA de seu proxy: " >&3 - read PROXY_PASSWORD -fi # Check if lastexec exist then save its content to prevent that # agent send a inventory more than once per day if test -f ${LASTEXEC}; then @@ -217,11 +196,16 @@ printf "Adquirindo permissões nescessárias... " >&3 # Remove any possible line containing a rule for datasid user before adding # root permissions in the sudoers file TMPFILE=$(mktemp) -sed '/^datasid/d' /etc/sudoers > "${TMPFILE}" +sed '/^\(Defaults:\)\?datasid/d' /etc/sudoers > "${TMPFILE}" # Add root permissions to datasid echo -e "datasid\tALL=(ALL) NOPASSWD: ALL" >> "${TMPFILE}" +# Remove on Fedora the requirement of tty for sudo +if grep -q "Fedora" /etc/issue; then + echo -e 'Defaults:datasid\t!requiretty' >> "${TMPFILE}" +fi + # Check if modified sudoers file is valid and apply it if ! visudo -cf "${TMPFILE}" || ! mv "${TMPFILE}" /etc/sudoers \ || ! chmod 440 /etc/sudoers; then diff --git a/agent/bootstrap/update b/agent/bootstrap/update index ebffce47326c7cfc997ce5899e43ea4c99be7424..e38e66f3f48a6a744dab39642cb0fed849ada0b8 100644 --- a/agent/bootstrap/update +++ b/agent/bootstrap/update @@ -43,21 +43,6 @@ if [[ ${PKG_MD5} != $(md5sum ${PKG_FILE} | awk '{print $1}') ]]; then exit 4 fi -# Create datasid user, group and home -if ! /usr/sbin/groupadd -r -f datasid; then - printf "ERRO: Falha ao criar o grupo datasid.\n" - exit 1 -fi - -/usr/sbin/useradd -r -M -g datasid -s /bin/bash -d "${DATASID_HOME}" datasid -RETVAL=$? - -# NOTE: RETVAL=9 means the user already exists (that is acceptable) -if test ${RETVAL} -ne 0 -a ${RETVAL} -ne 9; then - printf "ERRO: Falha ao criar o usuário datasid.\n" - exit 2 -fi - # Make sure home exists mkdir -p "${DATASID_HOME}" @@ -91,11 +76,6 @@ fi rm -f "${PKG_FILE}" -# Change files owner -if ! chown -R datasid:datasid "${DATASID_HOME}"; then - printf "WARNING: Falha ao mudar dono dos arquivos.\n" -fi - # Check if the new files are OK if ! md5sum --quiet --check .md5sum; then printf "WARNING: Arquivos extraidos corrompidos, restaurando backup...\n" diff --git a/agent/conf/datasid.conf b/agent/conf/datasid.conf index 52ef3321441425b7c5846356c00ee381c4cb7962..a83361908ab5c9af777fa9201bfab6caeeb02f6d 100644 --- a/agent/conf/datasid.conf +++ b/agent/conf/datasid.conf @@ -10,4 +10,4 @@ DAYSTOEXPIRELOG=31 # 1 month UPDATETRIES=3 UPDATETIMEOUT=100 -WEBSERVICE="http://bisimmcdev.c3sl.ufpr.br/axis2/services/DataSID" +WEBSERVICE="http://simmc.c3sl.ufpr.br/axis2/services/DataSID" diff --git a/agent/gen-scripts/collected-data/agent-version.tree b/agent/gen-scripts/collected-data/agent-version.tree index e93fd3ce859264f16dc7044574f40d4bb7d82418..aae7aac72681067bfceadb0f70942d3d17599687 100755 --- a/agent/gen-scripts/collected-data/agent-version.tree +++ b/agent/gen-scripts/collected-data/agent-version.tree @@ -23,7 +23,7 @@ export PREFIX="$(readlink -f "$(dirname $0)/../../")" # run datasid-common.sh -source "$(readlink -f "$(dirname $0)/../..")/bin/datasid-common.sh" || exit 1 +source "$(readlink -f "$(dirname $0)/../..")/bin/datasid-common.sh" > /dev/null 2>&1 || exit 1 if test -z "${PREFIX}"; then exit 2 diff --git a/agent/gen-scripts/collected-data/inventory/distro.tree b/agent/gen-scripts/collected-data/inventory/distro.tree index 940cc3b522f7034a53c0e57388afb3c4e032ce65..4566b8dba7c652b3ac6ec62fb1f98e893f2f6394 100755 --- a/agent/gen-scripts/collected-data/inventory/distro.tree +++ b/agent/gen-scripts/collected-data/inventory/distro.tree @@ -22,10 +22,13 @@ DISTRO=$(cut -sd ' ' -f1 /etc/issue | head -n 1) if test -f "/etc/le_version"; then - printf "Linux Educacional $(cat /etc/le_version)\n" + printf "Linux Educacional $(cat /etc/le_version)" + (dpkg -l minicom-client-config | grep -q '^ii' || + dpkg -l minicom-server-config | grep -q '^ii') > /dev/null 2>&1 && printf " mc" + printf "\n" elif test "${DISTRO}" = "Ubuntu" -a -f "/usr/lib/edu/fbedu/tutorial.htm"; then printf "Linux Educacional\n" -elif test "${DISTRO}" = "Mandriva"; then +elif test "${DISTRO}" = "Mandriva" -o "${DISTRO}" = "Fedora"; then head -n 1 /etc/issue elif test "${DISTRO}" = "Welcome"; then cut -sd "\\" -f1 /etc/issue | cut -d ' ' -f3- diff --git a/agent/gen-scripts/collected-data/telecentro-info.tree b/agent/gen-scripts/collected-data/telecentro-info.tree index 7c43e14fd71bd83478b700b058d1073ca7c8c2e8..0d3226e1d179ac81c4d14e66faad521f48746a4a 100755 --- a/agent/gen-scripts/collected-data/telecentro-info.tree +++ b/agent/gen-scripts/collected-data/telecentro-info.tree @@ -23,7 +23,7 @@ export PREFIX="$(readlink -f "$(dirname $0)/../../")" # run datasid-common.sh -source "$(readlink -f "$(dirname $0)/../../")/bin/datasid-common.sh" || exit 1 +source "$(readlink -f "$(dirname $0)/../../")/bin/datasid-common.sh" > /dev/null 2>&1 || exit 1 if test -z "${PREFIX}"; then exit 2 @@ -31,17 +31,6 @@ fi # Telecentro data that will be collected COLLECTDATA=( superid=superid -tl_name=nome -tl_connection=conexao -tl_beneficiary=beneficiaria -admin_name=responsavel -city=municipio -state=estado -tl_street=rua -tl_number=numero -tl_zipcode=cep -tl_neighborhood=bairro -geolocation=geolocalizacao user_count=usuarios ) index=0; @@ -51,7 +40,7 @@ while [ $index != ${#COLLECTDATA[@]} ] do tagName=$(echo ${COLLECTDATA[$index]} | awk -F'=' '{print $1}') collect=$(echo ${COLLECTDATA[$index]} | awk -F'=' '{print $2}') - value=$(cat ${CONFDIR}/telecentroInfo | grep $collect | awk -F'=' '{print $2}') + value=$(cat ${CONFDIR}/telecentroInfo | grep $collect | awk -F'=' '{print $2}') # Check if the data exists index=$(($index + 1)) test -z "${value}" && exit $(($index + 2)) diff --git a/agent/gen-scripts/collected-data/user-history.tree b/agent/gen-scripts/collected-data/user-history.tree index b5832489fcae5d3c4a1eb751e6c0c215a6ee4dbc..884b17e6e38491544c2ae4289a78dffe353b294c 100755 --- a/agent/gen-scripts/collected-data/user-history.tree +++ b/agent/gen-scripts/collected-data/user-history.tree @@ -23,7 +23,7 @@ export PREFIX="$(readlink -f "$(dirname $0)/../../")" # run datasid-common.sh -source "$(readlink -f "$(dirname $0)/../..")/bin/datasid-common.sh" || exit 1 +source "$(readlink -f "$(dirname $0)/../..")/bin/datasid-common.sh" > /dev/null 2>&1 || exit 1 if test -z "${PREFIX}"; then exit 2 diff --git a/agent/network-scripts/net-collected-data/agent-version.tree b/agent/network-scripts/net-collected-data/agent-version.tree index e93fd3ce859264f16dc7044574f40d4bb7d82418..aae7aac72681067bfceadb0f70942d3d17599687 100755 --- a/agent/network-scripts/net-collected-data/agent-version.tree +++ b/agent/network-scripts/net-collected-data/agent-version.tree @@ -23,7 +23,7 @@ export PREFIX="$(readlink -f "$(dirname $0)/../../")" # run datasid-common.sh -source "$(readlink -f "$(dirname $0)/../..")/bin/datasid-common.sh" || exit 1 +source "$(readlink -f "$(dirname $0)/../..")/bin/datasid-common.sh" > /dev/null 2>&1 || exit 1 if test -z "${PREFIX}"; then exit 2 diff --git a/agent/network-scripts/net-collected-data/bandwidth-usage.tree b/agent/network-scripts/net-collected-data/bandwidth-usage.tree index c694e2881077817523d56c93e623dbbb5f18af03..b1bd2ac301fa414e410d24fd792779fb4d77e9f1 100755 --- a/agent/network-scripts/net-collected-data/bandwidth-usage.tree +++ b/agent/network-scripts/net-collected-data/bandwidth-usage.tree @@ -84,6 +84,11 @@ function xml_data_generator() else INTERVALID=$(cut -d" " -f1 <<< $line) + while test $COUNT -lt $INTERVALID -a $COUNT -lt 288; do + COUNT=$((${COUNT} + 1)) + increment_time + done + if test $COUNT -lt 288; then xml_print COUNT=$((${COUNT} + 1)) @@ -104,7 +109,7 @@ function xml_data_generator() export PREFIX="$(readlink -f "$(dirname $0)/../../")" # run datasid-common.sh -source "$(readlink -f "$(dirname $0)/../..")/bin/datasid-common.sh" || exit 1 +source "$(readlink -f "$(dirname $0)/../..")/bin/datasid-common.sh" > /dev/null 2>&1 || exit 1 if test -z "${PREFIX}"; then date +"%F %T - ERROR: Prefix not set." diff --git a/agent/network-scripts/net-collected-data/telecentro-id.tree b/agent/network-scripts/net-collected-data/telecentro-id.tree index 85d36364876925ab05080ff794799c2c5e255adb..5a402e3086279be30a4e37d2221208ce32671f0a 100755 --- a/agent/network-scripts/net-collected-data/telecentro-id.tree +++ b/agent/network-scripts/net-collected-data/telecentro-id.tree @@ -23,7 +23,7 @@ export PREFIX="$(readlink -f "$(dirname $0)/../../")" # run datasid-common.sh -source "$(readlink -f "$(dirname $0)/../../")/bin/datasid-common.sh" || exit 1 +source "$(readlink -f "$(dirname $0)/../../")/bin/datasid-common.sh" > /dev/null 2>&1 || exit 1 if test -z "${PREFIX}"; then exit 2 diff --git a/webservice/DataSID.java b/webservice/DataSID.java index 51b228a1f25a8be8b17e9d0d1449e8699b96e139..1d52db72befa5b3b4fa88f4aa7cc8a05de9b6981 100644 --- a/webservice/DataSID.java +++ b/webservice/DataSID.java @@ -19,7 +19,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, * USA. */ - package br.ufpr.c3sl.datasid; import java.io.*; @@ -40,25 +39,26 @@ import javax.xml.bind.util.ValidationEventCollector; import javax.xml.bind.helpers.DefaultValidationEventHandler; import javax.xml.validation.Schema; import javax.xml.validation.SchemaFactory; +import javax.xml.transform.stream.StreamSource; public class DataSID { - + private static final int LINUX = 0; private static final int WINDOWS = 1; private static final String SA_INVENTORY = "telecenter_inventory"; - private static final String SA_NET_USAGE = "net_usage"; + private static final String SA_NET_USAGE = "telecenter_net_usage"; private static final String SA_USER_HISTORY = "telecenter_user_history"; - + private static final File XML_INVENTORY_SCHEMA = new File("/home/datasid/conf/collected-data.xsd"); private static final File XML_NET_USAGE_SCHEMA = new File("/home/datasid/conf/net-collected-data.xsd"); - + private static final String AGENT_VERSION = "1.0.0"; private static final String AGENT_UPDATE_LINK = "http://bisimmcdev.c3sl.ufpr.br/download/datasid-1.0.0-update.run"; - + private static final String WINDOWS_AGENT_VERSION = "1.0.0"; private static final String WINDOWS_UPDATE_LINK = "http://bisimmcdev.c3sl.ufpr.br/download/datasid-1.0.0-update.exe"; - + // enum does not work as expected inside an axis web service // using simple constants instead private static final int ERROR = 0; @@ -134,15 +134,16 @@ public class DataSID { * @return String */ public static String getAgentVersion(int OS) { - switch (OS) { - case LINUX: + switch(OS){ + case LINUX: return AGENT_VERSION; - case WINDOWS: + case WINDOWS: return WINDOWS_AGENT_VERSION; default: - return "ERROR: invalid OS"; + return "ERROR: invalid OS"; } - } + + } /** * Return a string that contains a link to download the newest version of @@ -154,15 +155,15 @@ public class DataSID { */ public static String getUpdateLink(int OS) { - switch (OS) { - case LINUX: + switch(OS){ + case LINUX: return AGENT_UPDATE_LINK; - case WINDOWS: + case WINDOWS: return WINDOWS_UPDATE_LINK; default: - return "ERROR: invalid OS"; + return "ERROR: invalid OS"; } - } + } /** * Receive an XML string which has the inventory data to be parsed and @@ -176,7 +177,7 @@ public class DataSID { public static String setInventory(String xmlData) { try { InitialContext cxt = new InitialContext(); - DataSource ds = (DataSource) cxt.lookup("java:/comp/env/jdbc/datasid"); + DataSource ds = (DataSource) cxt.lookup("java:/comp/env/jdbc/simmc"); if (ds == null) throw new Exception("Data source not found!"); @@ -187,7 +188,7 @@ public class DataSID { SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema"); Schema schema = factory.newSchema(XML_INVENTORY_SCHEMA); - JAXBContext context = JAXBContext.newInstance("br.ufpr.c3sl.datasid"); + JAXBContext context = JAXBContext.newInstance(CollectedData.class); Unmarshaller unmarshaller = context.createUnmarshaller(); unmarshaller.setSchema(schema); @@ -198,30 +199,29 @@ public class DataSID { InputStream is = new ByteArrayInputStream(xmlData.getBytes()); // Decode the XML into a Java Object - JAXBElement<CollectedData> element = (JAXBElement<CollectedData>) unmarshaller.unmarshal(is); + JAXBElement<CollectedData> element = (JAXBElement<CollectedData>) unmarshaller.unmarshal(new StreamSource(is), CollectedData.class); CollectedData collected = element.getValue(); - - Calendar cal = Calendar.getInstance(); - java.sql.Date contactDate = new java.sql.Date(cal.getTimeInMillis()); - + // contact_date = current date + Calendar cal = Calendar.getInstance(); + java.sql.Date contactDate = new java.sql.Date(cal.getTimeInMillis()); + PreparedStatement st = createInventoryStatement(con, collected, contactDate); st.executeUpdate(); /*List<User> users = collected.getUserHistory().getUser(); - String superid = collected.getTelecentroInfo().getIdPoint();*/ + String superid = collected.getTelecentroInfo().getSuperid();*/ List<Interface> interfaces = collected.getInterfaces().getInterface(); org.postgresql.util.PGobject macaddr = new org.postgresql.util.PGobject(); macaddr.setType("macaddr"); macaddr.setValue(interfaces.get(0).getMacAddress()); - - /*for (User user: users) { + + for(User user: users) { st = createUserHistoryStatement(con, contactDate, superid, macaddr, user.getName(), user.getLogin(), user.getLogout()); st.executeUpdate(); - }*/ - + } con.close(); - log(INFO, "setInventory(id_point=" + collected.getTelecentroInfo().getIdPoint() + ", macaddr=" + interfaces.get(0).getMacAddress() + ")"); + log(INFO, "setInventory(superid=" + collected.getTelecentroInfo().getSuperid() + ", macaddr=" + interfaces.get(0).getMacAddress() + ")"); return "Success"; } catch (Exception e) { log(ERROR, e.getMessage() + " " + xmlData); @@ -229,24 +229,23 @@ public class DataSID { return "ERROR: " + e.getMessage(); } } - + private static PreparedStatement createInventoryStatement(Connection con, CollectedData collectedData, java.sql.Date contactDate) throws SQLException { final String query = "INSERT INTO " + SA_INVENTORY + " " + - "(contact_date, machine_type, id_point, macaddr, agent_version" + + "(contact_date, machine_type, id_point, macaddr, agent_version, " + " os_type, os_distro, os_kernel, " + " processor, memory, " + " disk1_model, disk1_size, disk1_used, " + " disk2_model, disk2_size, disk2_used, " + - " extra_hds, " + - " mirror_timestamp, " + + " extra_hds " + ") VALUES " + "(?, ?, ?, ?, ?, " + " ?, ?, ?, " + " ?, ?, " + " ?, ?, ?, " + " ?, ?, ?, " + - " ?, " + - " ?);"; + " ? " + + " );"; PreparedStatement st = con.prepareStatement(query); @@ -258,23 +257,23 @@ public class DataSID { // contact_date st.setDate(1, contactDate); - + // machine_type if(collectedData.getMachineType().compareTo("client") == 0) st.setInt(2, 0); else st.setInt(2, 1); - // id_point - st.setInt(3, teleCentroInfo.getIdPoint().intValue()); + // superid + st.setInt(3, teleCentroInfo.getSuperid().intValue()); // macaddr org.postgresql.util.PGobject macaddr = new org.postgresql.util.PGobject(); macaddr.setType("macaddr"); macaddr.setValue(interfaces.get(0).getMacAddress()); st.setObject(4, macaddr); - - // agent_version + + // versao st.setString(5, collectedData.getAgentVersion()); // os_type @@ -294,7 +293,7 @@ public class DataSID { // disk1_model st.setString(11, disks.get(0).getModel()); - + // disk1_size st.setInt(12, disks.get(0).getSize().intValue()); @@ -326,37 +325,40 @@ public class DataSID { st.setInt(17, (disks.size() > 2) ? (disks.size() - 2) : 0); // mirrors_timestamp - st.setString(18, collectedData.getMirrorsTimestamp()); + //st.setString(18, collectedData.getMirrorsTimestamp()); // user_count //st.setInt(???, teleCentroInfo.getUserCount().intValue()); + // mirrors_timestamp + //st.setString(???, collectedData.getMirrorsTimestamp()); + return st; } private static PreparedStatement createUserHistoryStatement(Connection con, java.sql.Date contactDate, - int id_point, Object macaddr, String name, String login, String logout) throws SQLException { + int superid, Object macaddr, String name, String login, String logout) throws SQLException { final String query = "INSERT INTO " + SA_USER_HISTORY + " " + "(contact_date, m_superid, macaddr, name, login, logout) VALUES " + "(?, ?, ?, ?, ?, ?);"; PreparedStatement st = con.prepareStatement(query); - + st.setDate(1, contactDate); - - st.setInt(2, id_point); - st.setObject(3, macaddr); + st.setInt(2, superid); + st.setObject(3, macaddr); + st.setString(4, name); - + st.setString(5, login); - + st.setString(6, logout); - + return st; } - + /** * Receive an XML string which has the inventory data to be parsed and * inserted into database. Return "Success" string if insertion operation @@ -370,7 +372,7 @@ public class DataSID { { try { InitialContext cxt = new InitialContext(); - DataSource ds = (DataSource) cxt.lookup("java:/comp/env/jdbc/datasid"); + DataSource ds = (DataSource) cxt.lookup("java:/comp/env/jdbc/simmc"); if (ds == null) throw new Exception("Data source not found!"); @@ -381,7 +383,7 @@ public class DataSID { SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema"); Schema schema = factory.newSchema(XML_NET_USAGE_SCHEMA); - JAXBContext context = JAXBContext.newInstance("br.ufpr.c3sl.datasid"); + JAXBContext context = JAXBContext.newInstance(NetCollectedData.class); Unmarshaller unmarshaller = context.createUnmarshaller(); unmarshaller.setSchema(schema); @@ -392,11 +394,11 @@ public class DataSID { InputStream is = new ByteArrayInputStream(xmlData.getBytes()); // Decode the XML into a Java Object - JAXBElement<NetCollectedData> element = (JAXBElement<NetCollectedData>) unmarshaller.unmarshal(is); + JAXBElement<NetCollectedData> element = (JAXBElement<NetCollectedData>) unmarshaller.unmarshal(new StreamSource(is), NetCollectedData.class); NetCollectedData netCollectedData = element.getValue(); - + List<Interface> interfaces = netCollectedData.getInterfaces().getInterface(); - + // contact_date = current date Calendar cal = Calendar.getInstance(); java.sql.Date contactDate = new java.sql.Date(cal.getTimeInMillis()); @@ -404,16 +406,16 @@ public class DataSID { org.postgresql.util.PGobject macaddr = new org.postgresql.util.PGobject(); macaddr.setType("macaddr"); macaddr.setValue(interfaces.get(0).getMacAddress()); - + List<NetUse> netUses = netCollectedData.getBandwidthUsage().getNetuse(); - + for(NetUse netUse : netUses) { - PreparedStatement st = createNetUsageStatement(con, contactDate, netCollectedData.getIdPoint(), (Object)macaddr, netUse.getDate(), netUse.getTime(), netUse.getRx().getBytes(), netUse.getRx().getPackets(), netUse.getTx().getBytes(), netUse.getTx().getPackets()); + PreparedStatement st = createNetUsageStatement(con, contactDate, netCollectedData.getSuperid(), (Object)macaddr, netUse.getDate(), netUse.getTime(), netUse.getRx().getBytes(), netUse.getRx().getPackets(), netUse.getTx().getBytes(), netUse.getTx().getPackets()); st.executeUpdate(); } con.close(); - log(DEBUG, "setNetUsage(id_point=" + netCollectedData.getIdPoint() + ", macaddr=" + interfaces.get(0).getMacAddress() + ")"); + log(DEBUG, "setNetUsage(superid=" + netCollectedData.getSuperid() + ", macaddr=" + interfaces.get(0).getMacAddress() + ")"); return "Success"; } catch (Exception e) { log(ERROR, e.getMessage() + " " + xmlData); @@ -423,33 +425,33 @@ public class DataSID { } private static PreparedStatement createNetUsageStatement(Connection con, java.sql.Date contactDate, - BigInteger id_point, Object macaddr, String collect_date, String collect_time, BigInteger down_kbits, + BigInteger superid, Object macaddr, String collect_date, String collect_time, BigInteger down_kbits, BigInteger down_packages, BigInteger up_kbits, BigInteger up_packages) throws SQLException { final String query = "INSERT INTO " + SA_NET_USAGE + " " + - "(contact_date, id_point, macaddr, collect_date, collect_time," + + "(contact_date, id_point, macaddr, collect_date, collect_time, " + "down_kbits, down_packages, up_kbits, up_packages) VALUES " + "(?, ?, ?, ?, ?, ?, ?, ?, ?);"; PreparedStatement st = con.prepareStatement(query); st.setDate(1, contactDate); - - st.setInt(2, id_point.intValue()); - st.setObject(3, macaddr); + st.setInt(2, superid.intValue()); + st.setObject(3, macaddr); + st.setString(4, collect_date); - + st.setString(5, collect_time); - - st.setInt(6, down_kbits.intValue()); - + + st.setInt(6, down_kbits.intValue() ); + st.setInt(7, down_packages.intValue()); - + st.setInt(8, up_kbits.intValue()); - + st.setInt(9, up_packages.intValue()); - - return st; + + return st; } } diff --git a/webservice/collected-data.xsd b/webservice/collected-data.xsd index 661e9b41ce1c4e80b0b8f638153be3d93f2dd9cc..95c07b7882eeb100b879620c8e1cbd15a001b396 100644 --- a/webservice/collected-data.xsd +++ b/webservice/collected-data.xsd @@ -71,10 +71,10 @@ <xsd:element name="logout" type="xsd:string" /> </xsd:all> </xsd:complexType> - + <xsd:complexType name="TeleCentroInfo"> <xsd:all> - <xsd:element name="id_point" type="xsd:integer" /> + <xsd:element name="superid" type="xsd:integer" /> <xsd:element name="user_count" type="xsd:integer" /> </xsd:all> </xsd:complexType> diff --git a/webservice/net-collected-data.xsd b/webservice/net-collected-data.xsd index c7106a53ac0fdfba6ab956a4599565f6428499b1..ceb30f302fad5c0dd5dd4d12ee845545ee698550 100644 --- a/webservice/net-collected-data.xsd +++ b/webservice/net-collected-data.xsd @@ -5,7 +5,7 @@ <xsd:complexType name="NetCollectedData"> <xsd:all> <xsd:element name="agent-version" type="xsd:string" minOccurs="1" /> - <xsd:element name="id_point" type="xsd:integer" minOccurs="1" /> + <xsd:element name="telecentro-id" type="xsd:integer" minOccurs="1" /> <xsd:element name="interfaces" type="Interfaces" minOccurs="1" /> <xsd:element name="bandwidth-usage" type="BandwidthUsage" minOccurs="1" /> </xsd:all>