aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorOmar Tarabai <tarabai@devegypt.com>2014-05-05 15:46:28 +0000
committerOmar Tarabai <tarabai@devegypt.com>2014-05-05 15:46:28 +0000
commit4864f0e9dd779f5a36c798293336e5aab4ad685a (patch)
treec305d3bbe971eccb0eec80b0416da528979dc435 /src
parent8bcdff5d767e60d678a2eff637ae84d71665883e (diff)
downloadgnunet-4864f0e9dd779f5a36c798293336e5aab4ad685a.tar.gz
gnunet-4864f0e9dd779f5a36c798293336e5aab4ad685a.zip
executing sensor processes OK
Diffstat (limited to 'src')
-rw-r--r--src/sensor/Makefile.am4
-rw-r--r--src/sensor/gnunet-service-sensor.c75
-rw-r--r--src/sensor/sensors/averagepingrtt4
-rw-r--r--src/sensor/sensors/gnunetversion4
4 files changed, 75 insertions, 12 deletions
diff --git a/src/sensor/Makefile.am b/src/sensor/Makefile.am
index fe461d1bc..e3d9bbe69 100644
--- a/src/sensor/Makefile.am
+++ b/src/sensor/Makefile.am
@@ -64,7 +64,5 @@ install-data-local:
64 $(mkinstalldirs) $(datadir)/$(PACKAGE)/$(pkgsensordir) 64 $(mkinstalldirs) $(datadir)/$(PACKAGE)/$(pkgsensordir)
65 @$(NORMAL_INSTALL) 65 @$(NORMAL_INSTALL)
66 for sensor in $(pkgsensordir)/*; do \ 66 for sensor in $(pkgsensordir)/*; do \
67 if test -f $$sensor; then \ 67 cp -a $$sensor $(datadir)/$(PACKAGE)/$(pkgsensordir)/ ; \
68 $(INSTALL_DATA) $$sensor $(datadir)/$(PACKAGE)/$(pkgsensordir)/ ; \
69 fi \
70 done 68 done
diff --git a/src/sensor/gnunet-service-sensor.c b/src/sensor/gnunet-service-sensor.c
index 7718fafee..b831b2be7 100644
--- a/src/sensor/gnunet-service-sensor.c
+++ b/src/sensor/gnunet-service-sensor.c
@@ -777,6 +777,24 @@ void end_sensor_run_stat (void *cls, int success)
777} 777}
778 778
779/** 779/**
780 * Callback for output of executed sensor process
781 *
782 * @param cls 'struct SensorInfo *'
783 * @param line line of output from a command, NULL for the end
784 */
785void sensor_process_callback (void *cls, const char *line)
786{
787 struct SensorInfo *sensorinfo = cls;
788
789 if(NULL == line)
790 {
791 sensorinfo->running = GNUNET_NO;
792 return;
793 }
794 GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Received a value for sensor `%s': %s\n", sensorinfo->name, line);
795}
796
797/**
780 * Actual execution of a sensor 798 * Actual execution of a sensor
781 * 799 *
782 * @param cls 'struct SensorInfo' 800 * @param cls 'struct SensorInfo'
@@ -788,6 +806,8 @@ sensor_run (void *cls,
788{ 806{
789 struct SensorInfo *sensorinfo = cls; 807 struct SensorInfo *sensorinfo = cls;
790 int check_result; 808 int check_result;
809 char *sensors_dir;
810 char *process_path;
791 811
792 sensorinfo->execution_task = GNUNET_SCHEDULER_add_delayed(sensorinfo->interval, &sensor_run, sensorinfo); 812 sensorinfo->execution_task = GNUNET_SCHEDULER_add_delayed(sensorinfo->interval, &sensor_run, sensorinfo);
793 if(GNUNET_YES == sensorinfo->running) //FIXME: should we try to kill? 813 if(GNUNET_YES == sensorinfo->running) //FIXME: should we try to kill?
@@ -815,13 +835,45 @@ sensor_run (void *cls,
815 } 835 }
816 else if(sources[1] == sensorinfo->source) 836 else if(sources[1] == sensorinfo->source)
817 { 837 {
838 /*GNUNET_OS_start_process_s(GNUNET_NO,
839 GNUNET_OS_INHERIT_STD_OUT_AND_ERR,
840 NULL,
841 "touch",
842 "touch /home/omar/hiii");*/
843 /*GNUNET_OS_start_process(GNUNET_NO,
844 GNUNET_OS_INHERIT_STD_OUT_AND_ERR,
845 NULL,
846 NULL,
847 NULL,
848 "/home/omar/workspace/gnunet/src/sensor/sensors/averagepingrtt-files/avgping.sh",
849 "avgping.sh",
850 NULL);
851 GNUNET_OS_start_process(GNUNET_NO,
852 GNUNET_OS_INHERIT_STD_OUT_AND_ERR,
853 NULL,
854 NULL,
855 NULL,
856 "whoami",
857 "whoami",
858 NULL);*/
859 //FIXME: break execution if process is a path
818 //check if the process exists in $PATH 860 //check if the process exists in $PATH
861 process_path = GNUNET_strdup(sensorinfo->ext_process);
819 check_result = 862 check_result =
820 GNUNET_OS_check_helper_binary(sensorinfo->ext_process, GNUNET_NO, NULL); //search in $PATH 863 GNUNET_OS_check_helper_binary(sensorinfo->ext_process, GNUNET_NO, NULL); //search in $PATH
821 if(GNUNET_SYSERR == check_result) 864 if(GNUNET_SYSERR == check_result)
822 { 865 {
823 //search in sensor directory 866 //search in sensor directory
824 867 sensors_dir = get_sensor_dir();
868 GNUNET_free(process_path);
869 GNUNET_asprintf(&process_path, "%s%s-files%s%s",
870 sensors_dir,
871 sensorinfo->name,
872 DIR_SEPARATOR_STR,
873 sensorinfo->ext_process);
874 GNUNET_free(sensors_dir);
875 check_result =
876 GNUNET_OS_check_helper_binary(process_path, GNUNET_NO, NULL);
825 } 877 }
826 if(GNUNET_SYSERR == check_result) 878 if(GNUNET_SYSERR == check_result)
827 { 879 {
@@ -830,12 +882,25 @@ sensor_run (void *cls,
830 sensorinfo->ext_process); 882 sensorinfo->ext_process);
831 //FIXME: disable sensor here? 883 //FIXME: disable sensor here?
832 sensorinfo->running = GNUNET_NO; 884 sensorinfo->running = GNUNET_NO;
885 GNUNET_free(process_path);
833 return; 886 return;
834 } 887 }
835 else if(GNUNET_NO == check_result) 888 /*GNUNET_OS_start_process(GNUNET_NO,
836 { 889 GNUNET_OS_INHERIT_STD_OUT_AND_ERR,
837 890 NULL,
838 } 891 NULL,
892 NULL,
893 process_path,
894 sensorinfo->ext_process,
895 sensorinfo->ext_args,
896 NULL)*/
897 GNUNET_OS_command_run(&sensor_process_callback,
898 sensorinfo,
899 GNUNET_TIME_UNIT_FOREVER_REL,
900 process_path,
901 sensorinfo->ext_process,
902 sensorinfo->ext_args,
903 NULL);
839 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Process started for sensor `%s'\n", sensorinfo->name); 904 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Process started for sensor `%s'\n", sensorinfo->name);
840 } 905 }
841 else 906 else
diff --git a/src/sensor/sensors/averagepingrtt b/src/sensor/sensors/averagepingrtt
index 2012f555e..b8880c696 100644
--- a/src/sensor/sensors/averagepingrtt
+++ b/src/sensor/sensors/averagepingrtt
@@ -3,13 +3,13 @@
3VERSION = 1.0 3VERSION = 1.0
4DESCRIPTION = Calculate average ping latency to gnunet.org 4DESCRIPTION = Calculate average ping latency to gnunet.org
5CATEGORY = Internet-Connectivity 5CATEGORY = Internet-Connectivity
6ENABLED = NO 6ENABLED = YES
7 7
8# Start and end time format: %Y-%m-%d %H:%M:%S 8# Start and end time format: %Y-%m-%d %H:%M:%S
9#START_TIME = 9#START_TIME =
10#END_TIME = 10#END_TIME =
11#Interval in seconds 11#Interval in seconds
12INTERVAL = 3600 12INTERVAL = 30
13#LIFETIME = 13#LIFETIME =
14 14
15#CAPABILITIES = 15#CAPABILITIES =
diff --git a/src/sensor/sensors/gnunetversion b/src/sensor/sensors/gnunetversion
index deb0e5f2d..dd213b605 100644
--- a/src/sensor/sensors/gnunetversion
+++ b/src/sensor/sensors/gnunetversion
@@ -9,8 +9,8 @@ ENABLED = YES
9#START_TIME = 9#START_TIME =
10#END_TIME = 10#END_TIME =
11#Interval in seconds 11#Interval in seconds
12INTERVAL = 86400 12INTERVAL = 30
13LIFETIME = 86400 13LIFETIME = 30
14 14
15#CAPABILITIES = 15#CAPABILITIES =
16 16