#include <stdio.h> #include <string.h> /* C Wrapper för att fixa rättigheter för Apache. Kör som root: gcc suid_wrapper.c -o ../../../sheevaplug.cgi chmod a+s ../../../sheevaplug.cgi */ char s1[99] = ""; char ssh[] = "/usr/bin/ssh ina.nattsjo.se -l root -p 1122 "; char set_triggers[] = "'/root/bin/set_triggers.pl "; char elpatron[] = "'/root/bin/elpatron.pl "; char set_tellstick[] = "'/root/bin/set_tellstick.pl "; int main (int argc, char *argv[]) { setuid(1001); // Droppa privilegier till josefk if (argc > 0) { strcat(s1, ssh); if (strcmp(argv[1],"1") == 0) { strcat(s1, elpatron); strcat(s1, "'"); system(s1); } if (strcmp(argv[1],"2") == 0) { strcat(s1, elpatron); strcat(s1, " on x'"); system(s1); } if (strcmp(argv[1],"3") == 0) { strcat(s1, elpatron); strcat(s1, " off x'"); system(s1); } if (strcmp(argv[1],"4") == 0) { if (argc == 4) { strcat(s1, set_triggers); strcat(s1, argv[2]); strcat(s1, " "); strcat(s1, argv[3]); strcat(s1, "'"); printf("%s\n", s1); system(s1); } } if (strcmp(argv[1],"5") == 0) { strcat(s1, set_tellstick); strcat(s1, "update "); strcat(s1, argv[2]); strcat(s1, " "); strcat(s1, argv[3]); strcat(s1, " "); strcat(s1, argv[4]); strcat(s1, "'"); system(s1); } if (strcmp(argv[1],"6") == 0) { strcat(s1, set_tellstick); strcat(s1, "delete "); strcat(s1, argv[2]); strcat(s1, "'"); system(s1); } if (strcmp(argv[1],"7") == 0) { strcat(s1, set_tellstick); strcat(s1, "execute "); strcat(s1, argv[2]); strcat(s1, "'"); system(s1); } if (strcmp(argv[1],"8") == 0) { strcat(s1, set_tellstick); strcat(s1, "add "); strcat(s1, argv[2]); strcat(s1, " "); strcat(s1, argv[3]); strcat(s1, " "); strcat(s1, argv[4]); strcat(s1, "'"); system(s1); } } return 0; }