mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-27 03:07:43 +02:00
Am Pakfire weitergearbeitet.
CGI erweitert und mit neuen Funktionen versehen. Paketformat grundlegend geaendert. UpdateBooster gefixt. Avira+Avast als Updatequelle eingefuegt. VPN-Watch ins log.dat. DHCP-Server startet nach der Installation. Einen String im Installer verschoenert :D git-svn-id: http://svn.ipfire.org/svn/ipfire/trunk@639 ea5c0bd1-69bd-2848-81d8-4f18e57aeed8
This commit is contained in:
@@ -1,262 +1,262 @@
|
||||
/* SmoothWall setup program.
|
||||
*
|
||||
* This program is distributed under the terms of the GNU General Public
|
||||
* Licence. See the file COPYING for details.
|
||||
*
|
||||
* (c) Lawrence Manning, 2001
|
||||
* Stuff for setting up the DHCP server from the setup prog.
|
||||
*
|
||||
* $Id: dhcp.c,v 1.9.2.3 2004/12/03 06:46:50 eoberlander Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
#include "setup.h"
|
||||
|
||||
#define TOP 4
|
||||
|
||||
#define START_ADDRESS 0
|
||||
#define END_ADDRESS 1
|
||||
#define PRIMARY_DNS 2
|
||||
#define SECONDARY_DNS 3
|
||||
#define DEFAULT_LEASE_TIME 4
|
||||
#define MAX_LEASE_TIME 5
|
||||
#define DOMAIN_NAME_SUFFIX 6
|
||||
#define MAX_BOXES 7
|
||||
|
||||
extern FILE *flog;
|
||||
extern char *mylog;
|
||||
|
||||
extern char **ctr;
|
||||
|
||||
extern int automode;
|
||||
|
||||
newtComponent dhcpform;
|
||||
newtComponent entries[MAX_BOXES];
|
||||
newtComponent enabledcheckbox;
|
||||
|
||||
void dhcpdialogcallbackdhcp(newtComponent cm, void *data);
|
||||
|
||||
int handledhcp(void)
|
||||
{
|
||||
char *results[MAX_BOXES];
|
||||
char enabledresult;
|
||||
char startenabled;
|
||||
struct newtExitStruct es;
|
||||
newtComponent header;
|
||||
newtComponent labels[MAX_BOXES];
|
||||
newtComponent ok, cancel;
|
||||
char message[1000];
|
||||
char *labeltexts[MAX_BOXES] = { ctr[TR_START_ADDRESS], ctr[TR_END_ADDRESS],
|
||||
ctr[TR_PRIMARY_DNS], ctr[TR_SECONDARY_DNS], ctr[TR_DEFAULT_LEASE],
|
||||
ctr[TR_MAX_LEASE], ctr[TR_DOMAIN_NAME_SUFFIX] };
|
||||
char *varnames[MAX_BOXES] = { "START_ADDR_GREEN", "END_ADDR_GREEN",
|
||||
"DNS1_GREEN", "DNS2_GREEN",
|
||||
"DEFAULT_LEASE_TIME_GREEN", "MAX_LEASE_TIME_GREEN",
|
||||
"DOMAIN_NAME_GREEN"};
|
||||
char defaults[MAX_BOXES][STRING_SIZE];
|
||||
int result;
|
||||
int c;
|
||||
char temp[STRING_SIZE];
|
||||
struct keyvalue *mainkv = initkeyvalues();
|
||||
struct keyvalue *dhcpkv = initkeyvalues();
|
||||
struct keyvalue *ethernetkv = initkeyvalues();
|
||||
int error;
|
||||
FILE *file;
|
||||
char greenaddress[STRING_SIZE];
|
||||
char greennetaddress[STRING_SIZE];
|
||||
char greennetmask[STRING_SIZE];
|
||||
|
||||
memset(defaults, 0, sizeof(char) * STRING_SIZE * MAX_BOXES);
|
||||
|
||||
if (!(readkeyvalues(dhcpkv, CONFIG_ROOT "/dhcp/settings")))
|
||||
{
|
||||
freekeyvalues(dhcpkv);
|
||||
freekeyvalues(ethernetkv);
|
||||
errorbox(ctr[TR_UNABLE_TO_OPEN_SETTINGS_FILE]);
|
||||
return 0;
|
||||
}
|
||||
if (!(readkeyvalues(ethernetkv, CONFIG_ROOT "/ethernet/settings")))
|
||||
{
|
||||
freekeyvalues(dhcpkv);
|
||||
freekeyvalues(ethernetkv);
|
||||
errorbox(ctr[TR_UNABLE_TO_OPEN_SETTINGS_FILE]);
|
||||
return 0;
|
||||
}
|
||||
if (!(readkeyvalues(mainkv, CONFIG_ROOT "/main/settings")))
|
||||
{
|
||||
freekeyvalues(dhcpkv);
|
||||
freekeyvalues(ethernetkv);
|
||||
freekeyvalues(mainkv);
|
||||
errorbox(ctr[TR_UNABLE_TO_OPEN_SETTINGS_FILE]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Set default values. */
|
||||
findkey(ethernetkv, "GREEN_ADDRESS", defaults[PRIMARY_DNS]);
|
||||
findkey(mainkv, "DOMAINNAME", defaults[DOMAIN_NAME_SUFFIX]);
|
||||
strcpy(defaults[DEFAULT_LEASE_TIME], "60");
|
||||
strcpy(defaults[MAX_LEASE_TIME], "120");
|
||||
|
||||
sprintf(message, ctr[TR_DHCP_SERVER_CONFIGURATION]);
|
||||
newtCenteredWindow(55, 18, message);
|
||||
|
||||
dhcpform = newtForm(NULL, NULL, 0);
|
||||
|
||||
sprintf(message, ctr[TR_CONFIGURE_DHCP]);
|
||||
header = newtTextboxReflowed(1, 1, message, 52, 0, 0, 0);
|
||||
newtFormAddComponent(dhcpform, header);
|
||||
|
||||
strcpy(temp, ""); findkey(dhcpkv, "ENABLE_GREEN", temp);
|
||||
if (strcmp(temp, "on") == 0)
|
||||
startenabled = '*';
|
||||
else
|
||||
startenabled = ' ';
|
||||
enabledcheckbox = newtCheckbox(2, TOP + 0, ctr[TR_ENABLED], startenabled, " *", &enabledresult);
|
||||
newtFormAddComponent(dhcpform, enabledcheckbox);
|
||||
newtComponentAddCallback(enabledcheckbox, dhcpdialogcallbackdhcp, NULL);
|
||||
|
||||
for (c = 0; c < MAX_BOXES; c++)
|
||||
{
|
||||
labels[c] = newtTextbox(2, TOP + 2 + c, 33, 1, 0);
|
||||
newtTextboxSetText(labels[c], labeltexts[c]);
|
||||
newtFormAddComponent(dhcpform, labels[c]);
|
||||
strcpy(temp, defaults[c]); findkey(dhcpkv, varnames[c], temp);
|
||||
entries[c] = newtEntry(34, TOP + 2 + c, temp, 18, &results[c], 0);
|
||||
newtFormAddComponent(dhcpform, entries[c]);
|
||||
if (startenabled == ' ')
|
||||
newtEntrySetFlags(entries[c], NEWT_FLAG_DISABLED, NEWT_FLAGS_SET);
|
||||
|
||||
}
|
||||
|
||||
ok = newtButton(10, c + 7, ctr[TR_OK]);
|
||||
cancel = newtButton(34, c + 7, ctr[TR_CANCEL]);
|
||||
|
||||
newtFormAddComponents(dhcpform, ok, cancel, NULL);
|
||||
|
||||
do
|
||||
{
|
||||
error = 0;
|
||||
newtFormRun(dhcpform, &es);
|
||||
|
||||
if (es.u.co == ok)
|
||||
{
|
||||
/* OK was pressed; verify the contents of each entry. */
|
||||
if (enabledresult == '*')
|
||||
{
|
||||
strcpy(message, ctr[TR_INVALID_FIELDS]);
|
||||
if (inet_addr(results[START_ADDRESS]) == INADDR_NONE)
|
||||
{
|
||||
strcat(message, ctr[TR_START_ADDRESS_CR]);
|
||||
error = 1;
|
||||
}
|
||||
if (inet_addr(results[END_ADDRESS]) == INADDR_NONE)
|
||||
{
|
||||
strcat(message, ctr[TR_END_ADDRESS_CR]);
|
||||
error = 1;
|
||||
}
|
||||
if (strlen(results[SECONDARY_DNS]))
|
||||
{
|
||||
if (inet_addr(results[PRIMARY_DNS]) == INADDR_NONE)
|
||||
{
|
||||
strcat(message, ctr[TR_PRIMARY_DNS_CR]);
|
||||
error = 1;
|
||||
}
|
||||
}
|
||||
if (strlen(results[SECONDARY_DNS]))
|
||||
{
|
||||
if (inet_addr(results[SECONDARY_DNS]) == INADDR_NONE)
|
||||
{
|
||||
strcat(message, ctr[TR_SECONDARY_DNS_CR]);
|
||||
error = 1;
|
||||
}
|
||||
}
|
||||
if (!(atol(results[DEFAULT_LEASE_TIME])))
|
||||
{
|
||||
strcat(message, ctr[TR_DEFAULT_LEASE_CR]);
|
||||
error = 1;
|
||||
}
|
||||
if (!(atol(results[MAX_LEASE_TIME])))
|
||||
{
|
||||
strcat(message, ctr[TR_MAX_LEASE_CR]);
|
||||
error = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (error)
|
||||
errorbox(message);
|
||||
else
|
||||
{
|
||||
for (c = 0; c < MAX_BOXES; c++)
|
||||
replacekeyvalue(dhcpkv, varnames[c], results[c]);
|
||||
if (enabledresult == '*')
|
||||
{
|
||||
replacekeyvalue(dhcpkv, "ENABLE_GREEN", "on");
|
||||
fclose(fopen(CONFIG_ROOT "/dhcp/enable_green", "w"));
|
||||
chown(CONFIG_ROOT "/dhcp/enable_green", 99, 99);
|
||||
}
|
||||
else
|
||||
{
|
||||
replacekeyvalue(dhcpkv, "ENABLE_GREEN", "off");
|
||||
unlink(CONFIG_ROOT "/dhcp/enable_green");
|
||||
}
|
||||
replacekeyvalue(dhcpkv, "VALID", "yes");
|
||||
writekeyvalues(dhcpkv, CONFIG_ROOT "/dhcp/settings");
|
||||
|
||||
findkey(ethernetkv, "GREEN_ADDRESS", greenaddress);
|
||||
findkey(ethernetkv, "GREEN_NETADDRESS", greennetaddress);
|
||||
findkey(ethernetkv, "GREEN_NETMASK", greennetmask);
|
||||
|
||||
file = fopen(CONFIG_ROOT "/dhcp/dhcpd.conf", "w");
|
||||
fprintf(file, "ddns-update-style none;\n");
|
||||
fprintf(file, "subnet %s netmask %s\n", greennetaddress, greennetmask);
|
||||
fprintf(file, "{\n");
|
||||
fprintf(file, "\toption subnet-mask %s;\n", greennetmask);
|
||||
fprintf(file, "\toption domain-name \"%s\";\n", results[DOMAIN_NAME_SUFFIX]);
|
||||
fprintf(file, "\toption routers %s;\n", greenaddress);
|
||||
if (strlen(results[PRIMARY_DNS]))
|
||||
{
|
||||
fprintf(file, "\toption domain-name-servers ");
|
||||
fprintf(file, "%s", results[PRIMARY_DNS]);
|
||||
if (strlen(results[SECONDARY_DNS]))
|
||||
fprintf(file, ", %s", results[SECONDARY_DNS]);
|
||||
fprintf(file, ";\n");
|
||||
}
|
||||
|
||||
fprintf(file, "\trange %s %s;\n", results[START_ADDRESS], results[END_ADDRESS]);
|
||||
fprintf(file, "\tdefault-lease-time %d;\n", (int) atol(results[DEFAULT_LEASE_TIME]) * 60);
|
||||
fprintf(file, "\tmax-lease-time %d;\n", (int) atol(results[MAX_LEASE_TIME]) * 60);
|
||||
fprintf(file, "}\n");
|
||||
fclose(file);
|
||||
chown(CONFIG_ROOT "/dhcp/dhcpd.conf", 99, 99);
|
||||
if (automode == 0)
|
||||
mysystem("/usr/local/bin/restartdhcp");
|
||||
}
|
||||
result = 1;
|
||||
}
|
||||
else
|
||||
result = 0;
|
||||
}
|
||||
while (error);
|
||||
|
||||
newtFormDestroy(dhcpform);
|
||||
newtPopWindow();
|
||||
|
||||
freekeyvalues(dhcpkv);
|
||||
freekeyvalues(ethernetkv);
|
||||
freekeyvalues(mainkv);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/* Called when enabled flag is toggled. Toggle disabled state of other 3
|
||||
* controls. */
|
||||
void dhcpdialogcallbackdhcp(newtComponent cm, void *data)
|
||||
{
|
||||
int c;
|
||||
|
||||
for (c = 0; c < MAX_BOXES; c++)
|
||||
newtEntrySetFlags(entries[c], NEWT_FLAG_DISABLED, NEWT_FLAGS_TOGGLE);
|
||||
|
||||
newtRefresh();
|
||||
newtDrawForm(dhcpform);
|
||||
}
|
||||
/* SmoothWall setup program.
|
||||
*
|
||||
* This program is distributed under the terms of the GNU General Public
|
||||
* Licence. See the file COPYING for details.
|
||||
*
|
||||
* (c) Lawrence Manning, 2001
|
||||
* Stuff for setting up the DHCP server from the setup prog.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "setup.h"
|
||||
|
||||
#define TOP 4
|
||||
|
||||
#define START_ADDRESS 0
|
||||
#define END_ADDRESS 1
|
||||
#define PRIMARY_DNS 2
|
||||
#define SECONDARY_DNS 3
|
||||
#define DEFAULT_LEASE_TIME 4
|
||||
#define MAX_LEASE_TIME 5
|
||||
#define DOMAIN_NAME_SUFFIX 6
|
||||
#define MAX_BOXES 7
|
||||
|
||||
extern FILE *flog;
|
||||
extern char *mylog;
|
||||
|
||||
extern char **ctr;
|
||||
|
||||
extern int automode;
|
||||
|
||||
newtComponent dhcpform;
|
||||
newtComponent entries[MAX_BOXES];
|
||||
newtComponent enabledcheckbox;
|
||||
|
||||
void dhcpdialogcallbackdhcp(newtComponent cm, void *data);
|
||||
|
||||
int handledhcp(void)
|
||||
{
|
||||
char *results[MAX_BOXES];
|
||||
char enabledresult;
|
||||
char startenabled;
|
||||
struct newtExitStruct es;
|
||||
newtComponent header;
|
||||
newtComponent labels[MAX_BOXES];
|
||||
newtComponent ok, cancel;
|
||||
char message[1000];
|
||||
char *labeltexts[MAX_BOXES] = { ctr[TR_START_ADDRESS], ctr[TR_END_ADDRESS],
|
||||
ctr[TR_PRIMARY_DNS], ctr[TR_SECONDARY_DNS], ctr[TR_DEFAULT_LEASE],
|
||||
ctr[TR_MAX_LEASE], ctr[TR_DOMAIN_NAME_SUFFIX] };
|
||||
char *varnames[MAX_BOXES] = { "START_ADDR_GREEN", "END_ADDR_GREEN",
|
||||
"DNS1_GREEN", "DNS2_GREEN",
|
||||
"DEFAULT_LEASE_TIME_GREEN", "MAX_LEASE_TIME_GREEN",
|
||||
"DOMAIN_NAME_GREEN"};
|
||||
char defaults[MAX_BOXES][STRING_SIZE];
|
||||
int result;
|
||||
int c;
|
||||
char temp[STRING_SIZE];
|
||||
struct keyvalue *mainkv = initkeyvalues();
|
||||
struct keyvalue *dhcpkv = initkeyvalues();
|
||||
struct keyvalue *ethernetkv = initkeyvalues();
|
||||
int error;
|
||||
FILE *file;
|
||||
char greenaddress[STRING_SIZE];
|
||||
char greennetaddress[STRING_SIZE];
|
||||
char greennetmask[STRING_SIZE];
|
||||
|
||||
memset(defaults, 0, sizeof(char) * STRING_SIZE * MAX_BOXES);
|
||||
|
||||
if (!(readkeyvalues(dhcpkv, CONFIG_ROOT "/dhcp/settings")))
|
||||
{
|
||||
freekeyvalues(dhcpkv);
|
||||
freekeyvalues(ethernetkv);
|
||||
errorbox(ctr[TR_UNABLE_TO_OPEN_SETTINGS_FILE]);
|
||||
return 0;
|
||||
}
|
||||
if (!(readkeyvalues(ethernetkv, CONFIG_ROOT "/ethernet/settings")))
|
||||
{
|
||||
freekeyvalues(dhcpkv);
|
||||
freekeyvalues(ethernetkv);
|
||||
errorbox(ctr[TR_UNABLE_TO_OPEN_SETTINGS_FILE]);
|
||||
return 0;
|
||||
}
|
||||
if (!(readkeyvalues(mainkv, CONFIG_ROOT "/main/settings")))
|
||||
{
|
||||
freekeyvalues(dhcpkv);
|
||||
freekeyvalues(ethernetkv);
|
||||
freekeyvalues(mainkv);
|
||||
errorbox(ctr[TR_UNABLE_TO_OPEN_SETTINGS_FILE]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Set default values. */
|
||||
findkey(ethernetkv, "GREEN_ADDRESS", defaults[PRIMARY_DNS]);
|
||||
findkey(mainkv, "DOMAINNAME", defaults[DOMAIN_NAME_SUFFIX]);
|
||||
strcpy(defaults[DEFAULT_LEASE_TIME], "60");
|
||||
strcpy(defaults[MAX_LEASE_TIME], "120");
|
||||
|
||||
sprintf(message, ctr[TR_DHCP_SERVER_CONFIGURATION]);
|
||||
newtCenteredWindow(55, 18, message);
|
||||
|
||||
dhcpform = newtForm(NULL, NULL, 0);
|
||||
|
||||
sprintf(message, ctr[TR_CONFIGURE_DHCP]);
|
||||
header = newtTextboxReflowed(1, 1, message, 52, 0, 0, 0);
|
||||
newtFormAddComponent(dhcpform, header);
|
||||
|
||||
strcpy(temp, ""); findkey(dhcpkv, "ENABLE_GREEN", temp);
|
||||
if (strcmp(temp, "on") == 0)
|
||||
startenabled = '*';
|
||||
else
|
||||
startenabled = ' ';
|
||||
enabledcheckbox = newtCheckbox(2, TOP + 0, ctr[TR_ENABLED], startenabled, " *", &enabledresult);
|
||||
newtFormAddComponent(dhcpform, enabledcheckbox);
|
||||
newtComponentAddCallback(enabledcheckbox, dhcpdialogcallbackdhcp, NULL);
|
||||
|
||||
for (c = 0; c < MAX_BOXES; c++)
|
||||
{
|
||||
labels[c] = newtTextbox(2, TOP + 2 + c, 33, 1, 0);
|
||||
newtTextboxSetText(labels[c], labeltexts[c]);
|
||||
newtFormAddComponent(dhcpform, labels[c]);
|
||||
strcpy(temp, defaults[c]); findkey(dhcpkv, varnames[c], temp);
|
||||
entries[c] = newtEntry(34, TOP + 2 + c, temp, 18, &results[c], 0);
|
||||
newtFormAddComponent(dhcpform, entries[c]);
|
||||
if (startenabled == ' ')
|
||||
newtEntrySetFlags(entries[c], NEWT_FLAG_DISABLED, NEWT_FLAGS_SET);
|
||||
|
||||
}
|
||||
|
||||
ok = newtButton(10, c + 7, ctr[TR_OK]);
|
||||
cancel = newtButton(34, c + 7, ctr[TR_CANCEL]);
|
||||
|
||||
newtFormAddComponents(dhcpform, ok, cancel, NULL);
|
||||
|
||||
do
|
||||
{
|
||||
error = 0;
|
||||
newtFormRun(dhcpform, &es);
|
||||
|
||||
if (es.u.co == ok)
|
||||
{
|
||||
/* OK was pressed; verify the contents of each entry. */
|
||||
if (enabledresult == '*')
|
||||
{
|
||||
strcpy(message, ctr[TR_INVALID_FIELDS]);
|
||||
if (inet_addr(results[START_ADDRESS]) == INADDR_NONE)
|
||||
{
|
||||
strcat(message, ctr[TR_START_ADDRESS_CR]);
|
||||
error = 1;
|
||||
}
|
||||
if (inet_addr(results[END_ADDRESS]) == INADDR_NONE)
|
||||
{
|
||||
strcat(message, ctr[TR_END_ADDRESS_CR]);
|
||||
error = 1;
|
||||
}
|
||||
if (strlen(results[SECONDARY_DNS]))
|
||||
{
|
||||
if (inet_addr(results[PRIMARY_DNS]) == INADDR_NONE)
|
||||
{
|
||||
strcat(message, ctr[TR_PRIMARY_DNS_CR]);
|
||||
error = 1;
|
||||
}
|
||||
}
|
||||
if (strlen(results[SECONDARY_DNS]))
|
||||
{
|
||||
if (inet_addr(results[SECONDARY_DNS]) == INADDR_NONE)
|
||||
{
|
||||
strcat(message, ctr[TR_SECONDARY_DNS_CR]);
|
||||
error = 1;
|
||||
}
|
||||
}
|
||||
if (!(atol(results[DEFAULT_LEASE_TIME])))
|
||||
{
|
||||
strcat(message, ctr[TR_DEFAULT_LEASE_CR]);
|
||||
error = 1;
|
||||
}
|
||||
if (!(atol(results[MAX_LEASE_TIME])))
|
||||
{
|
||||
strcat(message, ctr[TR_MAX_LEASE_CR]);
|
||||
error = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (error)
|
||||
errorbox(message);
|
||||
else
|
||||
{
|
||||
for (c = 0; c < MAX_BOXES; c++)
|
||||
replacekeyvalue(dhcpkv, varnames[c], results[c]);
|
||||
if (enabledresult == '*')
|
||||
{
|
||||
replacekeyvalue(dhcpkv, "ENABLE_GREEN", "on");
|
||||
fclose(fopen(CONFIG_ROOT "/dhcp/enable_green", "w"));
|
||||
chown(CONFIG_ROOT "/dhcp/enable_green", 99, 99);
|
||||
mysystem("/usr/local/bin/dhcpctrl enable");
|
||||
}
|
||||
else
|
||||
{
|
||||
replacekeyvalue(dhcpkv, "ENABLE_GREEN", "off");
|
||||
unlink(CONFIG_ROOT "/dhcp/enable_green");
|
||||
mysystem("/usr/local/bin/dhcpctrl disable");
|
||||
}
|
||||
replacekeyvalue(dhcpkv, "VALID", "yes");
|
||||
writekeyvalues(dhcpkv, CONFIG_ROOT "/dhcp/settings");
|
||||
|
||||
findkey(ethernetkv, "GREEN_ADDRESS", greenaddress);
|
||||
findkey(ethernetkv, "GREEN_NETADDRESS", greennetaddress);
|
||||
findkey(ethernetkv, "GREEN_NETMASK", greennetmask);
|
||||
|
||||
file = fopen(CONFIG_ROOT "/dhcp/dhcpd.conf", "w");
|
||||
fprintf(file, "ddns-update-style none;\n");
|
||||
fprintf(file, "subnet %s netmask %s\n", greennetaddress, greennetmask);
|
||||
fprintf(file, "{\n");
|
||||
fprintf(file, "\toption subnet-mask %s;\n", greennetmask);
|
||||
fprintf(file, "\toption domain-name \"%s\";\n", results[DOMAIN_NAME_SUFFIX]);
|
||||
fprintf(file, "\toption routers %s;\n", greenaddress);
|
||||
if (strlen(results[PRIMARY_DNS]))
|
||||
{
|
||||
fprintf(file, "\toption domain-name-servers ");
|
||||
fprintf(file, "%s", results[PRIMARY_DNS]);
|
||||
if (strlen(results[SECONDARY_DNS]))
|
||||
fprintf(file, ", %s", results[SECONDARY_DNS]);
|
||||
fprintf(file, ";\n");
|
||||
}
|
||||
|
||||
fprintf(file, "\trange %s %s;\n", results[START_ADDRESS], results[END_ADDRESS]);
|
||||
fprintf(file, "\tdefault-lease-time %d;\n", (int) atol(results[DEFAULT_LEASE_TIME]) * 60);
|
||||
fprintf(file, "\tmax-lease-time %d;\n", (int) atol(results[MAX_LEASE_TIME]) * 60);
|
||||
fprintf(file, "}\n");
|
||||
fclose(file);
|
||||
chown(CONFIG_ROOT "/dhcp/dhcpd.conf", 99, 99);
|
||||
if (automode == 0)
|
||||
mysystem("/usr/local/bin/dhcpctrl enable");
|
||||
}
|
||||
result = 1;
|
||||
}
|
||||
else
|
||||
result = 0;
|
||||
}
|
||||
while (error);
|
||||
|
||||
newtFormDestroy(dhcpform);
|
||||
newtPopWindow();
|
||||
|
||||
freekeyvalues(dhcpkv);
|
||||
freekeyvalues(ethernetkv);
|
||||
freekeyvalues(mainkv);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/* Called when enabled flag is toggled. Toggle disabled state of other 3
|
||||
* controls. */
|
||||
void dhcpdialogcallbackdhcp(newtComponent cm, void *data)
|
||||
{
|
||||
int c;
|
||||
|
||||
for (c = 0; c < MAX_BOXES; c++)
|
||||
newtEntrySetFlags(entries[c], NEWT_FLAG_DISABLED, NEWT_FLAGS_TOGGLE);
|
||||
|
||||
newtRefresh();
|
||||
newtDrawForm(dhcpform);
|
||||
}
|
||||
|
||||
@@ -15,19 +15,18 @@
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
int i;
|
||||
char command; // Add size here
|
||||
char add; // Add size here
|
||||
char command[1024];
|
||||
char add[STRING_SIZE];
|
||||
|
||||
if (!(initsetuid()))
|
||||
exit(1);
|
||||
|
||||
sprintf(command, "/opt/pakfire/pakfire");
|
||||
snprintf(command, STRING_SIZE, "/opt/pakfire/pakfire");
|
||||
|
||||
for (i = 0; i < argc - 1; i++) {
|
||||
for (i = 1; i < argc; i++) {
|
||||
sprintf(add, " %s", argv[i]);
|
||||
strcat(command, add);
|
||||
}
|
||||
|
||||
return safe_system(command);
|
||||
|
||||
}
|
||||
|
||||
@@ -21,6 +21,14 @@ sub logger {
|
||||
system("logger -t pakfire \"$log\"");
|
||||
}
|
||||
|
||||
sub usage {
|
||||
&Pakfire::message("Usage: pakfire <install|remove> <pak(s)>");
|
||||
&Pakfire::message(" <update> - Contacts the servers for new lists of paks.");
|
||||
&Pakfire::message(" <upgrade> - Installs the latest version of a pak.");
|
||||
&Pakfire::message(" <list> - Outputs a short list with all available paks.");
|
||||
exit 1;
|
||||
}
|
||||
|
||||
sub pinghost {
|
||||
my $host = shift;
|
||||
|
||||
@@ -163,7 +171,7 @@ sub dbgetlist {
|
||||
}
|
||||
|
||||
if (("$age" gt 86400) || ("$force" eq "force")) {
|
||||
cleanup();
|
||||
#cleanup();
|
||||
fetchfile("lists/packages_list.db", "");
|
||||
move("$Conf::cachedir/packages_list.db", "$Conf::dbdir/lists/packages_list.db");
|
||||
}
|
||||
@@ -188,7 +196,11 @@ sub dblist {
|
||||
my @templine;
|
||||
foreach $line (sort @db) {
|
||||
@templine = split(/\;/,$line);
|
||||
### filter here...
|
||||
if ("$filter" eq "notinstalled") {
|
||||
next if ( -e "$Conf::dbdir/installed/meta-$templine[0]" );
|
||||
} elsif ("$filter" eq "installed") {
|
||||
next unless ( -e "$Conf::dbdir/installed/meta-$templine[0]" );
|
||||
}
|
||||
if ("$forweb" eq "forweb") {
|
||||
print "<option value=\"$templine[0]\">$templine[0]-$templine[1]-$templine[2]</option>\n";
|
||||
} else {
|
||||
@@ -471,4 +483,20 @@ sub senduuid {
|
||||
system("rm -f $Conf::cachedir/counter* 2>/dev/null");
|
||||
}
|
||||
|
||||
sub lock {
|
||||
my $status = shift;
|
||||
if ("$status" eq "on") {
|
||||
system("touch /opt/pakfire/pakfire.lock");
|
||||
system("chmod 777 /opt/pakfire/pakfire.lock");
|
||||
logger("Created lock");
|
||||
} else {
|
||||
if (system("rm -f /opt/pakfire/pakfire.lock >/dev/null 2>&1")) {
|
||||
logger("Successfully removed lock.");
|
||||
} else {
|
||||
logger("Couldn't remove lock.");
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
@@ -16,19 +16,21 @@
|
||||
}
|
||||
|
||||
unless (@ARGV) {
|
||||
&Pakfire::message("Usage: pakfire <install|remove> <pak(s)>");
|
||||
&Pakfire::message(" <update>");
|
||||
&Pakfire::message(" <upgrade>");
|
||||
exit 1;
|
||||
&Pakfire::usage;
|
||||
}
|
||||
|
||||
if ("$ARGV[0]" eq "install") {
|
||||
&Pakfire::lock("on");
|
||||
shift;
|
||||
my @deps;
|
||||
my @paks;
|
||||
my @temp;
|
||||
foreach (@ARGV) {
|
||||
push(@paks,$_);
|
||||
if ("$_" =~ "^--") {
|
||||
$interactive = 0 if ("$_" eq "--non-interactive");
|
||||
} else {
|
||||
push(@paks,$_);
|
||||
}
|
||||
}
|
||||
foreach (@paks) {
|
||||
@temp = &Pakfire::resolvedeps("$_");
|
||||
@@ -71,10 +73,6 @@
|
||||
exit 1;
|
||||
}
|
||||
}
|
||||
|
||||
&Pakfire::message("### Installing all packages:");
|
||||
foreach (sort @all) { &Pakfire::message("# --> $_"); }
|
||||
&Pakfire::message("");
|
||||
|
||||
### Download first
|
||||
foreach (sort @all) {
|
||||
@@ -85,16 +83,28 @@
|
||||
foreach (sort @all) {
|
||||
&Pakfire::setuppak("$_");
|
||||
}
|
||||
|
||||
&Pakfire::lock("off");
|
||||
|
||||
} elsif ("$ARGV[0]" eq "remove") {
|
||||
|
||||
|
||||
} elsif ("$ARGV[0]" eq "update") {
|
||||
my $force = "noforce";
|
||||
&Pakfire::makeuuid();
|
||||
&Pakfire::senduuid();
|
||||
&Pakfire::getmirrors();
|
||||
$force = "force" if ("$ARGV[1]" eq "--force");
|
||||
&Pakfire::dbgetlist("$force");
|
||||
|
||||
} elsif ("$ARGV[0]" eq "list") {
|
||||
&Pakfire::dblist("noweb");
|
||||
&Pakfire::dblist("all", "noweb");
|
||||
|
||||
} elsif ("$ARGV[0]" eq "resolvedeps") {
|
||||
foreach (@ARGV) {
|
||||
next if ("$_" eq "resolvedeps");
|
||||
&Pakfire::resolvedeps("$_");
|
||||
}
|
||||
|
||||
} else {
|
||||
&Pakfire::usage;
|
||||
}
|
||||
|
||||
5
src/paks/files
Normal file
5
src/paks/files
Normal file
@@ -0,0 +1,5 @@
|
||||
files
|
||||
install.sh
|
||||
uninstall.sh
|
||||
update.sh
|
||||
ROOTFILES
|
||||
Reference in New Issue
Block a user